[{"data":1,"prerenderedAt":3234},["ShallowReactive",2],{"navigation_docs":3,"-start-quick-start":464,"-start-quick-start-surround":3229},[4,30,80,245,379,434],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Start","\u002Fstart","1.start",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":20,"path":21,"stem":22,"icon":23},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":25,"path":26,"stem":27,"icon":28},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Learn","\u002Flearn","2.learn",[35,40,45,50,55,60,65,70,75],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":46,"path":47,"stem":48,"icon":49},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":51,"path":52,"stem":53,"icon":54},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":56,"path":57,"stem":58,"icon":59},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":61,"path":62,"stem":63,"icon":64},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":66,"path":67,"stem":68,"icon":69},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":71,"path":72,"stem":73,"icon":74},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":76,"path":77,"stem":78,"icon":79},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":81,"path":82,"stem":83,"children":84,"page":29},"Integrate","\u002Fintegrate","3.integrate",[85,89,157],{"title":36,"path":86,"stem":87,"icon":88},"\u002Fintegrate\u002Foverview","3.integrate\u002F0.overview","i-lucide-plug",{"title":90,"path":91,"stem":92,"children":93,"page":29},"Adapters","\u002Fintegrate\u002Fadapters","3.integrate\u002Fadapters",[94,97,137],{"title":36,"path":95,"stem":96,"icon":39},"\u002Fintegrate\u002Fadapters\u002Foverview","3.integrate\u002Fadapters\u002F01.overview",{"title":98,"path":99,"stem":100,"children":101,"page":29},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","3.integrate\u002Fadapters\u002Fcloud",[102,107,112,117,122,127,132],{"title":103,"path":104,"stem":105,"icon":106},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","3.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":108,"path":109,"stem":110,"icon":111},"OTLP","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fotlp","3.integrate\u002Fadapters\u002Fcloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":113,"path":114,"stem":115,"icon":116},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","3.integrate\u002Fadapters\u002Fcloud\u002F03.posthog","i-simple-icons-posthog",{"title":118,"path":119,"stem":120,"icon":121},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","3.integrate\u002Fadapters\u002Fcloud\u002F04.sentry","i-simple-icons-sentry",{"title":123,"path":124,"stem":125,"icon":126},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","3.integrate\u002Fadapters\u002Fcloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":128,"path":129,"stem":130,"icon":131},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","3.integrate\u002Fadapters\u002Fcloud\u002F06.datadog","i-simple-icons-datadog",{"title":133,"path":134,"stem":135,"icon":136},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fhyperdx","3.integrate\u002Fadapters\u002Fcloud\u002F07.hyperdx","i-custom-hyperdx",{"title":138,"path":139,"stem":140,"children":141,"page":29},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","3.integrate\u002Fadapters\u002Fself-hosted",[142,147,152],{"title":143,"path":144,"stem":145,"icon":146},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","3.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":148,"path":149,"stem":150,"icon":151},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","3.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":153,"path":154,"stem":155,"icon":156},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":158,"path":159,"stem":160,"children":161,"page":29},"Frameworks","\u002Fintegrate\u002Fframeworks","3.integrate\u002Fframeworks",[162,166,171,176,181,186,191,196,201,206,211,216,221,226,230,235,240],{"title":36,"path":163,"stem":164,"icon":165},"\u002Fintegrate\u002Fframeworks\u002Foverview","3.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":167,"path":168,"stem":169,"icon":170},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","3.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":172,"path":173,"stem":174,"icon":175},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","3.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":177,"path":178,"stem":179,"icon":180},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","3.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":182,"path":183,"stem":184,"icon":185},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","3.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":187,"path":188,"stem":189,"icon":190},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","3.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":192,"path":193,"stem":194,"icon":195},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","3.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":197,"path":198,"stem":199,"icon":200},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","3.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":202,"path":203,"stem":204,"icon":205},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","3.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":207,"path":208,"stem":209,"icon":210},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","3.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":212,"path":213,"stem":214,"icon":215},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","3.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":217,"path":218,"stem":219,"icon":220},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","3.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":222,"path":223,"stem":224,"icon":225},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","3.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":227,"path":228,"stem":229,"icon":74},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","3.integrate\u002Fframeworks\u002F13.standalone",{"title":231,"path":232,"stem":233,"icon":234},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","3.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":236,"path":237,"stem":238,"icon":239},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","3.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":241,"path":242,"stem":243,"icon":244},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","3.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":246,"path":247,"stem":248,"children":249,"page":29},"Use Cases","\u002Fuse-cases","4.use-cases",[250,254,259,288,316,348,369,374],{"title":36,"path":251,"stem":252,"icon":253},"\u002Fuse-cases\u002Foverview","4.use-cases\u002F0.overview","i-lucide-list-checks",{"title":255,"path":256,"stem":257,"icon":258},"Client Logging","\u002Fuse-cases\u002Fclient-logging","4.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":29},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","4.use-cases\u002F2.ai-sdk",[265,268,273,278,283],{"title":36,"path":266,"stem":267,"icon":39},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","4.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":269,"path":270,"stem":271,"icon":272},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","4.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":274,"path":275,"stem":276,"icon":277},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","4.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":279,"path":280,"stem":281,"icon":282},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","4.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":284,"path":285,"stem":286,"icon":287},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","4.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":289,"icon":290,"path":291,"stem":292,"children":293,"page":29},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","4.use-cases\u002F3.better-auth",[294,297,302,307,311],{"title":36,"path":295,"stem":296,"icon":39},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","4.use-cases\u002F3.better-auth\u002F01.overview",{"title":298,"path":299,"stem":300,"icon":301},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","4.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":303,"path":304,"stem":305,"icon":306},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","4.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":308,"path":309,"stem":310,"icon":258},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","4.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":312,"path":313,"stem":314,"icon":315},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","4.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":317,"icon":318,"path":319,"stem":320,"children":321,"page":29},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","4.use-cases\u002F4.audit",[322,325,330,335,340,344],{"title":36,"path":323,"stem":324,"icon":39},"\u002Fuse-cases\u002Faudit\u002Foverview","4.use-cases\u002F4.audit\u002F01.overview",{"title":326,"path":327,"stem":328,"icon":329},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","4.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":331,"path":332,"stem":333,"icon":334},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","4.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":336,"path":337,"stem":338,"icon":339},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","4.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":341,"path":342,"stem":343,"icon":318},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","4.use-cases\u002F4.audit\u002F05.compliance",{"title":345,"path":346,"stem":347,"icon":79},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","4.use-cases\u002F4.audit\u002F06.recipes",{"title":284,"icon":315,"path":349,"stem":350,"children":351,"page":29},"\u002Fuse-cases\u002Ftelemetry","4.use-cases\u002F4.telemetry",[352,355,360,365],{"title":36,"path":353,"stem":354,"icon":39},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","4.use-cases\u002F4.telemetry\u002F01.overview",{"title":356,"path":357,"stem":358,"icon":359},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","4.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":361,"path":362,"stem":363,"icon":364},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","4.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":366,"path":367,"stem":368,"icon":79},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","4.use-cases\u002F4.telemetry\u002F04.reference",{"title":370,"path":371,"stem":372,"icon":373},"Enrichers","\u002Fuse-cases\u002Fenrichers","4.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":375,"path":376,"stem":377,"icon":378},"eve","\u002Fuse-cases\u002Feve","4.use-cases\u002F5.eve","i-custom-eve",{"title":380,"path":381,"stem":382,"children":383,"page":29},"Extend","\u002Fextend","5.extend",[384,388,393,398,403,407,411,415,419,424,429],{"title":36,"path":385,"stem":386,"icon":387},"\u002Fextend\u002Foverview","5.extend\u002F0.overview","i-lucide-blocks",{"title":389,"path":390,"stem":391,"icon":392},"Stream","\u002Fextend\u002Fstream","5.extend\u002F1.stream","i-lucide-radio-tower",{"title":394,"path":395,"stem":396,"icon":397},"Custom framework","\u002Fextend\u002Fcustom-framework","5.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":399,"path":400,"stem":401,"icon":402},"FS reader","\u002Fextend\u002Ffs-reader","5.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":345,"path":404,"stem":405,"icon":406},"\u002Fextend\u002Fconsumer-recipes","5.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":408,"path":409,"stem":410,"icon":387},"Plugins","\u002Fextend\u002Fplugins","5.extend\u002F4.plugins",{"title":412,"path":413,"stem":414,"icon":373},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","5.extend\u002F5.custom-enrichers",{"title":416,"path":417,"stem":418,"icon":64},"Tail sampling","\u002Fextend\u002Ftail-sampling","5.extend\u002F6.tail-sampling",{"title":420,"path":421,"stem":422,"icon":423},"Identity headers","\u002Fextend\u002Fidentity-headers","5.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":425,"path":426,"stem":427,"icon":428},"Custom drains","\u002Fextend\u002Fcustom-drains","5.extend\u002F8.custom-drains","i-lucide-share-2",{"title":430,"path":431,"stem":432,"icon":433},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","5.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":366,"path":435,"stem":436,"children":437,"page":29},"\u002Freference","6.reference",[438,443,446,451,455,460],{"title":439,"path":440,"stem":441,"icon":442},"Configuration","\u002Freference\u002Fconfiguration","6.reference\u002F1.configuration","i-lucide-settings",{"title":312,"path":444,"stem":445,"icon":315},"\u002Freference\u002Fperformance","6.reference\u002F2.performance",{"title":447,"path":448,"stem":449,"icon":450},"Vite Plugin","\u002Freference\u002Fvite-plugin","6.reference\u002F3.vite-plugin","i-custom-vite",{"title":452,"path":453,"stem":454,"icon":318},"Best Practices","\u002Freference\u002Fbest-practices","6.reference\u002F4.best-practices",{"title":456,"path":457,"stem":458,"icon":459},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","6.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":461,"path":462,"stem":463,"icon":373},"Agent Skills","\u002Freference\u002Fagent-skills","6.reference\u002F6.agent-skills",{"id":465,"title":25,"body":466,"description":3219,"extension":3220,"links":3221,"meta":3225,"navigation":3226,"path":26,"seo":3227,"stem":27,"__hash__":3228},"docs\u002F1.start\u002F4.quick-start.md",{"type":467,"value":468,"toc":3205},"minimark",[469,473,498,542,547,550,763,766,787,795,799,809,1074,1094,1110,1183,1197,1201,1208,1537,1547,1552,1615,1619,1622,1627,1633,1823,1826,1873,1877,1882,2010,2023,2027,2033,2285,2289,2391,2395,2400,2762,2766,2772,3163,3169,3173,3201],[470,471,472],"p",{},"This guide covers the core APIs you'll use most often with evlog.",[474,475,477,478,482,483,487,488,487,491,487,494,497],"callout",{"color":476,"icon":373},"info","In Nuxt, evlog ",[479,480,481],"strong",{},"auto-imports"," all functions (",[484,485,486],"code",{},"useLogger",", ",[484,489,490],{},"log",[484,492,493],{},"createError",[484,495,496],{},"parseError","). No import statements needed.",[499,500,503,506,528],"prompt",{":actions":501,"description":502,"icon":28},"[\"copy\",\"cursor\",\"claude\"]","Get evlog running in 2 minutes",[470,504,505],{},"Get evlog running in my project in under 2 minutes.",[507,508,509,513,516,519,522,525],"ul",{},[510,511,512],"li",{},"Install evlog: pnpm add evlog",[510,514,515],{},"Detect my framework and wire up the matching integration",[510,517,518],{},"Set evlog.env.service to my app name",[510,520,521],{},"Add a single useLogger(event) call in a route handler with log.set({ ... })",[510,523,524],{},"Throw one createError({ message, status, why, fix }) for an invalid input case",[510,526,527],{},"Trigger the route locally and confirm a single wide event prints to the terminal",[470,529,530,531,537,538],{},"Docs: ",[532,533,534],"a",{"href":534,"rel":535},"https:\u002F\u002Fwww.evlog.dev\u002Fstart\u002Fquick-start",[536],"nofollow","\nFrameworks: ",[532,539,540],{"href":540,"rel":541},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[536],[543,544,546],"h2",{"id":545},"log-simple-logging","log (Simple Logging)",[470,548,549],{},"The simplest way to use evlog. Fire-and-forget structured logs, anywhere in your code:",[551,552,553,715],"code-group",{},[554,555,561],"pre",{"className":556,"code":557,"filename":558,"language":559,"meta":560,"style":560},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { log } from 'evlog'\n\nlog.info('auth', 'User logged in')\nlog.error({ action: 'payment', error: 'card_declined' })\nlog.warn('cache', 'Cache miss')\n","Server","typescript","",[484,562,563,596,603,638,685],{"__ignoreMap":560},[564,565,568,572,576,580,583,586,589,593],"span",{"class":566,"line":567},"line",1,[564,569,571],{"class":570},"s7zQu","import",[564,573,575],{"class":574},"sMK4o"," {",[564,577,579],{"class":578},"sTEyZ"," log",[564,581,582],{"class":574}," }",[564,584,585],{"class":570}," from",[564,587,588],{"class":574}," '",[564,590,592],{"class":591},"sfazB","evlog",[564,594,595],{"class":574},"'\n",[564,597,599],{"class":566,"line":598},2,[564,600,602],{"emptyLinePlaceholder":601},true,"\n",[564,604,606,608,611,614,617,620,623,625,628,630,633,635],{"class":566,"line":605},3,[564,607,490],{"class":578},[564,609,610],{"class":574},".",[564,612,476],{"class":613},"s2Zo4",[564,615,616],{"class":578},"(",[564,618,619],{"class":574},"'",[564,621,622],{"class":591},"auth",[564,624,619],{"class":574},[564,626,627],{"class":574},",",[564,629,588],{"class":574},[564,631,632],{"class":591},"User logged in",[564,634,619],{"class":574},[564,636,637],{"class":578},")\n",[564,639,641,643,645,648,650,653,657,660,662,665,667,669,672,674,676,679,681,683],{"class":566,"line":640},4,[564,642,490],{"class":578},[564,644,610],{"class":574},[564,646,647],{"class":613},"error",[564,649,616],{"class":578},[564,651,652],{"class":574},"{",[564,654,656],{"class":655},"swJcz"," action",[564,658,659],{"class":574},":",[564,661,588],{"class":574},[564,663,664],{"class":591},"payment",[564,666,619],{"class":574},[564,668,627],{"class":574},[564,670,671],{"class":655}," error",[564,673,659],{"class":574},[564,675,588],{"class":574},[564,677,678],{"class":591},"card_declined",[564,680,619],{"class":574},[564,682,582],{"class":574},[564,684,637],{"class":578},[564,686,688,690,692,695,697,699,702,704,706,708,711,713],{"class":566,"line":687},5,[564,689,490],{"class":578},[564,691,610],{"class":574},[564,693,694],{"class":613},"warn",[564,696,616],{"class":578},[564,698,619],{"class":574},[564,700,701],{"class":591},"cache",[564,703,619],{"class":574},[564,705,627],{"class":574},[564,707,588],{"class":574},[564,709,710],{"class":591},"Cache miss",[564,712,619],{"class":574},[564,714,637],{"class":578},[554,716,721],{"className":717,"code":718,"filename":719,"language":720,"meta":560,"style":560},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","10:23:45.612 [auth] User logged in\n10:23:45.613 ERROR [my-app] action=payment error=card_declined\n10:23:45.614 [cache] Cache miss\n","Output","bash",[484,722,723,732,755],{"__ignoreMap":560},[564,724,725,729],{"class":566,"line":567},[564,726,728],{"class":727},"sBMFI","10:23:45.612",[564,730,731],{"class":578}," [auth] User logged in\n",[564,733,734,737,740,743,746,748,750,752],{"class":566,"line":598},[564,735,736],{"class":727},"10:23:45.613",[564,738,739],{"class":591}," ERROR",[564,741,742],{"class":578}," [my-app] action",[564,744,745],{"class":574},"=",[564,747,664],{"class":591},[564,749,671],{"class":578},[564,751,745],{"class":574},[564,753,754],{"class":591},"card_declined\n",[564,756,757,760],{"class":566,"line":605},[564,758,759],{"class":727},"10:23:45.614",[564,761,762],{"class":578}," [cache] Cache miss\n",[470,764,765],{},"Two call styles:",[507,767,768,778],{},[510,769,770,773,774,777],{},[479,771,772],{},"Tagged",": ",[484,775,776],{},"log.info('tag', 'message')"," for quick, readable console output",[510,779,780,773,783,786],{},[479,781,782],{},"Structured",[484,784,785],{},"log.info({ key: value })"," for rich events that flow through the drain pipeline",[474,788,791,792,794],{"color":789,"icon":790},"neutral","i-lucide-arrow-right","See the full ",[532,793,41],{"href":42}," guide for all patterns and drain integration.",[543,796,798],{"id":797},"createlogger-wide-events","createLogger (Wide Events)",[470,800,801,802,805,806,659],{},"When you need to ",[479,803,804],{},"accumulate context"," across multiple steps of an operation, whether a script, background job, queue worker, or workflow, use ",[484,807,808],{},"createLogger",[551,810,811,1017],{},[554,812,815],{"className":556,"code":813,"filename":814,"language":559,"meta":560,"style":560},"import { initLogger, createLogger } from 'evlog'\n\ninitLogger({ env: { service: 'sync-worker' } })\n\nconst log = createLogger({ jobId: job.id, queue: 'emails' })\n\nlog.set({ batch: { size: 50 } })\nlog.set({ batch: { processed: 50 } })\nlog.emit()\n","scripts\u002Fsync-job.ts",[484,816,817,841,845,879,883,931,936,972,1004],{"__ignoreMap":560},[564,818,819,821,823,826,828,831,833,835,837,839],{"class":566,"line":567},[564,820,571],{"class":570},[564,822,575],{"class":574},[564,824,825],{"class":578}," initLogger",[564,827,627],{"class":574},[564,829,830],{"class":578}," createLogger",[564,832,582],{"class":574},[564,834,585],{"class":570},[564,836,588],{"class":574},[564,838,592],{"class":591},[564,840,595],{"class":574},[564,842,843],{"class":566,"line":598},[564,844,602],{"emptyLinePlaceholder":601},[564,846,847,850,852,854,857,859,861,864,866,868,871,873,875,877],{"class":566,"line":605},[564,848,849],{"class":613},"initLogger",[564,851,616],{"class":578},[564,853,652],{"class":574},[564,855,856],{"class":655}," env",[564,858,659],{"class":574},[564,860,575],{"class":574},[564,862,863],{"class":655}," service",[564,865,659],{"class":574},[564,867,588],{"class":574},[564,869,870],{"class":591},"sync-worker",[564,872,619],{"class":574},[564,874,582],{"class":574},[564,876,582],{"class":574},[564,878,637],{"class":578},[564,880,881],{"class":566,"line":640},[564,882,602],{"emptyLinePlaceholder":601},[564,884,885,889,892,894,896,898,900,903,905,908,910,913,915,918,920,922,925,927,929],{"class":566,"line":687},[564,886,888],{"class":887},"spNyl","const",[564,890,891],{"class":578}," log ",[564,893,745],{"class":574},[564,895,830],{"class":613},[564,897,616],{"class":578},[564,899,652],{"class":574},[564,901,902],{"class":655}," jobId",[564,904,659],{"class":574},[564,906,907],{"class":578}," job",[564,909,610],{"class":574},[564,911,912],{"class":578},"id",[564,914,627],{"class":574},[564,916,917],{"class":655}," queue",[564,919,659],{"class":574},[564,921,588],{"class":574},[564,923,924],{"class":591},"emails",[564,926,619],{"class":574},[564,928,582],{"class":574},[564,930,637],{"class":578},[564,932,934],{"class":566,"line":933},6,[564,935,602],{"emptyLinePlaceholder":601},[564,937,939,941,943,946,948,950,953,955,957,960,962,966,968,970],{"class":566,"line":938},7,[564,940,490],{"class":578},[564,942,610],{"class":574},[564,944,945],{"class":613},"set",[564,947,616],{"class":578},[564,949,652],{"class":574},[564,951,952],{"class":655}," batch",[564,954,659],{"class":574},[564,956,575],{"class":574},[564,958,959],{"class":655}," size",[564,961,659],{"class":574},[564,963,965],{"class":964},"sbssI"," 50",[564,967,582],{"class":574},[564,969,582],{"class":574},[564,971,637],{"class":578},[564,973,975,977,979,981,983,985,987,989,991,994,996,998,1000,1002],{"class":566,"line":974},8,[564,976,490],{"class":578},[564,978,610],{"class":574},[564,980,945],{"class":613},[564,982,616],{"class":578},[564,984,652],{"class":574},[564,986,952],{"class":655},[564,988,659],{"class":574},[564,990,575],{"class":574},[564,992,993],{"class":655}," processed",[564,995,659],{"class":574},[564,997,965],{"class":964},[564,999,582],{"class":574},[564,1001,582],{"class":574},[564,1003,637],{"class":578},[564,1005,1007,1009,1011,1014],{"class":566,"line":1006},9,[564,1008,490],{"class":578},[564,1010,610],{"class":574},[564,1012,1013],{"class":613},"emit",[564,1015,1016],{"class":578},"()\n",[554,1018,1021],{"className":717,"code":1019,"filename":1020,"language":720,"meta":560,"style":560},"10:23:45.612 INFO [sync-worker] in 1204ms\n  ├─ jobId: job_abc123\n  ├─ queue: emails\n  └─ batch: size=50 processed=50\n","Output (Pretty)",[484,1022,1023,1033,1044,1054],{"__ignoreMap":560},[564,1024,1025,1027,1030],{"class":566,"line":567},[564,1026,728],{"class":727},[564,1028,1029],{"class":591}," INFO",[564,1031,1032],{"class":578}," [sync-worker] in 1204ms\n",[564,1034,1035,1038,1041],{"class":566,"line":598},[564,1036,1037],{"class":727},"  ├─",[564,1039,1040],{"class":591}," jobId:",[564,1042,1043],{"class":591}," job_abc123\n",[564,1045,1046,1048,1051],{"class":566,"line":605},[564,1047,1037],{"class":727},[564,1049,1050],{"class":591}," queue:",[564,1052,1053],{"class":591}," emails\n",[564,1055,1056,1059,1062,1065,1068,1071],{"class":566,"line":640},[564,1057,1058],{"class":727},"  └─",[564,1060,1061],{"class":591}," batch:",[564,1063,1064],{"class":591}," size=",[564,1066,1067],{"class":964},"50",[564,1069,1070],{"class":591}," processed=",[564,1072,1073],{"class":964},"50\n",[470,1075,1076,1079,1080,487,1082,487,1084,487,1086,487,1088,1090,1091,610],{},[484,1077,1078],{},"createLogger()"," accepts any initial context as a plain object. It returns a logger with ",[484,1081,945],{},[484,1083,647],{},[484,1085,476],{},[484,1087,694],{},[484,1089,1013],{},", and ",[484,1092,1093],{},"getContext",[470,1095,1096,1097,1100,1101,487,1104,1090,1107,659],{},"For HTTP request contexts specifically, use ",[484,1098,1099],{},"createRequestLogger()"," which pre-populates ",[484,1102,1103],{},"method",[484,1105,1106],{},"path",[484,1108,1109],{},"requestId",[554,1111,1114],{"className":556,"code":1112,"filename":1113,"language":559,"meta":560,"style":560},"import { createRequestLogger } from 'evlog'\n\nconst log = createRequestLogger({ method: 'POST', path: '\u002Fapi\u002Fcheckout' })\n","src\u002Fworker.ts",[484,1115,1116,1135,1139],{"__ignoreMap":560},[564,1117,1118,1120,1122,1125,1127,1129,1131,1133],{"class":566,"line":567},[564,1119,571],{"class":570},[564,1121,575],{"class":574},[564,1123,1124],{"class":578}," createRequestLogger",[564,1126,582],{"class":574},[564,1128,585],{"class":570},[564,1130,588],{"class":574},[564,1132,592],{"class":591},[564,1134,595],{"class":574},[564,1136,1137],{"class":566,"line":598},[564,1138,602],{"emptyLinePlaceholder":601},[564,1140,1141,1143,1145,1147,1149,1151,1153,1156,1158,1160,1163,1165,1167,1170,1172,1174,1177,1179,1181],{"class":566,"line":605},[564,1142,888],{"class":887},[564,1144,891],{"class":578},[564,1146,745],{"class":574},[564,1148,1124],{"class":613},[564,1150,616],{"class":578},[564,1152,652],{"class":574},[564,1154,1155],{"class":655}," method",[564,1157,659],{"class":574},[564,1159,588],{"class":574},[564,1161,1162],{"class":591},"POST",[564,1164,619],{"class":574},[564,1166,627],{"class":574},[564,1168,1169],{"class":655}," path",[564,1171,659],{"class":574},[564,1173,588],{"class":574},[564,1175,1176],{"class":591},"\u002Fapi\u002Fcheckout",[564,1178,619],{"class":574},[564,1180,582],{"class":574},[564,1182,637],{"class":578},[474,1184,1185,1186,1188,1189,1192,1193,1196],{"color":476,"icon":13},"With ",[484,1187,808],{}," and ",[484,1190,1191],{},"createRequestLogger",", you must call ",[484,1194,1195],{},"log.emit()"," manually. In framework integrations, this happens automatically.",[543,1198,1200],{"id":1199},"uselogger-retrieve-the-request-logger","useLogger (Retrieve the Request Logger)",[470,1202,1203,1204,1207],{},"When using a framework integration (Nuxt, Hono, Express, etc.), the middleware automatically creates a wide event logger on request start and emits it on response end. ",[484,1205,1206],{},"useLogger(event)"," retrieves that logger from the request context:",[551,1209,1210,1478],{},[554,1211,1214],{"className":556,"code":1212,"filename":1213,"language":559,"meta":560,"style":560},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  const order = await processCheckout()\n  log.set({ orderId: order.id })\n\n  return { success: true, orderId: order.id }\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[484,1215,1216,1235,1239,1271,1289,1293,1341,1384,1388,1405,1433,1438,1470],{"__ignoreMap":560},[564,1217,1218,1220,1222,1225,1227,1229,1231,1233],{"class":566,"line":567},[564,1219,571],{"class":570},[564,1221,575],{"class":574},[564,1223,1224],{"class":578}," useLogger",[564,1226,582],{"class":574},[564,1228,585],{"class":570},[564,1230,588],{"class":574},[564,1232,592],{"class":591},[564,1234,595],{"class":574},[564,1236,1237],{"class":566,"line":598},[564,1238,602],{"emptyLinePlaceholder":601},[564,1240,1241,1244,1247,1250,1252,1255,1258,1262,1265,1268],{"class":566,"line":605},[564,1242,1243],{"class":570},"export",[564,1245,1246],{"class":570}," default",[564,1248,1249],{"class":613}," defineEventHandler",[564,1251,616],{"class":578},[564,1253,1254],{"class":887},"async",[564,1256,1257],{"class":574}," (",[564,1259,1261],{"class":1260},"sHdIc","event",[564,1263,1264],{"class":574},")",[564,1266,1267],{"class":887}," =>",[564,1269,1270],{"class":574}," {\n",[564,1272,1273,1276,1278,1281,1283,1285,1287],{"class":566,"line":640},[564,1274,1275],{"class":887},"  const",[564,1277,579],{"class":578},[564,1279,1280],{"class":574}," =",[564,1282,1224],{"class":613},[564,1284,616],{"class":655},[564,1286,1261],{"class":578},[564,1288,637],{"class":655},[564,1290,1291],{"class":566,"line":687},[564,1292,602],{"emptyLinePlaceholder":601},[564,1294,1295,1298,1300,1302,1304,1306,1309,1311,1313,1316,1318,1321,1323,1326,1328,1330,1333,1335,1337,1339],{"class":566,"line":933},[564,1296,1297],{"class":578},"  log",[564,1299,610],{"class":574},[564,1301,945],{"class":613},[564,1303,616],{"class":655},[564,1305,652],{"class":574},[564,1307,1308],{"class":655}," user",[564,1310,659],{"class":574},[564,1312,575],{"class":574},[564,1314,1315],{"class":655}," id",[564,1317,659],{"class":574},[564,1319,1320],{"class":964}," 1",[564,1322,627],{"class":574},[564,1324,1325],{"class":655}," plan",[564,1327,659],{"class":574},[564,1329,588],{"class":574},[564,1331,1332],{"class":591},"pro",[564,1334,619],{"class":574},[564,1336,582],{"class":574},[564,1338,582],{"class":574},[564,1340,637],{"class":655},[564,1342,1343,1345,1347,1349,1351,1353,1356,1358,1360,1363,1365,1368,1370,1373,1375,1378,1380,1382],{"class":566,"line":938},[564,1344,1297],{"class":578},[564,1346,610],{"class":574},[564,1348,945],{"class":613},[564,1350,616],{"class":655},[564,1352,652],{"class":574},[564,1354,1355],{"class":655}," cart",[564,1357,659],{"class":574},[564,1359,575],{"class":574},[564,1361,1362],{"class":655}," items",[564,1364,659],{"class":574},[564,1366,1367],{"class":964}," 3",[564,1369,627],{"class":574},[564,1371,1372],{"class":655}," total",[564,1374,659],{"class":574},[564,1376,1377],{"class":964}," 9999",[564,1379,582],{"class":574},[564,1381,582],{"class":574},[564,1383,637],{"class":655},[564,1385,1386],{"class":566,"line":974},[564,1387,602],{"emptyLinePlaceholder":601},[564,1389,1390,1392,1395,1397,1400,1403],{"class":566,"line":1006},[564,1391,1275],{"class":887},[564,1393,1394],{"class":578}," order",[564,1396,1280],{"class":574},[564,1398,1399],{"class":570}," await",[564,1401,1402],{"class":613}," processCheckout",[564,1404,1016],{"class":655},[564,1406,1408,1410,1412,1414,1416,1418,1421,1423,1425,1427,1429,1431],{"class":566,"line":1407},10,[564,1409,1297],{"class":578},[564,1411,610],{"class":574},[564,1413,945],{"class":613},[564,1415,616],{"class":655},[564,1417,652],{"class":574},[564,1419,1420],{"class":655}," orderId",[564,1422,659],{"class":574},[564,1424,1394],{"class":578},[564,1426,610],{"class":574},[564,1428,912],{"class":578},[564,1430,582],{"class":574},[564,1432,637],{"class":655},[564,1434,1436],{"class":566,"line":1435},11,[564,1437,602],{"emptyLinePlaceholder":601},[564,1439,1441,1444,1446,1449,1451,1455,1457,1459,1461,1463,1465,1467],{"class":566,"line":1440},12,[564,1442,1443],{"class":570},"  return",[564,1445,575],{"class":574},[564,1447,1448],{"class":655}," success",[564,1450,659],{"class":574},[564,1452,1454],{"class":1453},"sfNiH"," true",[564,1456,627],{"class":574},[564,1458,1420],{"class":655},[564,1460,659],{"class":574},[564,1462,1394],{"class":578},[564,1464,610],{"class":574},[564,1466,912],{"class":578},[564,1468,1469],{"class":574}," }\n",[564,1471,1473,1476],{"class":566,"line":1472},13,[564,1474,1475],{"class":574},"}",[564,1477,637],{"class":578},[554,1479,1481],{"className":717,"code":1480,"filename":1020,"language":720,"meta":560,"style":560},"10:23:45.612 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 234ms\n  ├─ user: id=1 plan=pro\n  ├─ cart: items=3 total=9999\n  └─ orderId: ord_abc123\n",[484,1482,1483,1492,1508,1527],{"__ignoreMap":560},[564,1484,1485,1487,1489],{"class":566,"line":567},[564,1486,728],{"class":727},[564,1488,1029],{"class":591},[564,1490,1491],{"class":578}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 234ms\n",[564,1493,1494,1496,1499,1502,1505],{"class":566,"line":598},[564,1495,1037],{"class":727},[564,1497,1498],{"class":591}," user:",[564,1500,1501],{"class":591}," id=",[564,1503,1504],{"class":964},"1",[564,1506,1507],{"class":591}," plan=pro\n",[564,1509,1510,1512,1515,1518,1521,1524],{"class":566,"line":605},[564,1511,1037],{"class":727},[564,1513,1514],{"class":591}," cart:",[564,1516,1517],{"class":591}," items=",[564,1519,1520],{"class":964},"3",[564,1522,1523],{"class":591}," total=",[564,1525,1526],{"class":964},"9999\n",[564,1528,1529,1531,1534],{"class":566,"line":640},[564,1530,1058],{"class":727},[564,1532,1533],{"class":591}," orderId:",[564,1535,1536],{"class":591}," ord_abc123\n",[474,1538,1541,1543,1544,610],{"color":1539,"icon":1540},"success","i-lucide-check",[484,1542,486],{}," doesn't create a logger, the framework middleware already did that. It just retrieves it from the event context so you can add data with ",[484,1545,1546],{},"set()",[1548,1549,1551],"h3",{"id":1550},"when-to-use-what","When to use what",[1553,1554,1555,1578],"table",{},[1556,1557,1558],"thead",{},[1559,1560,1561,1567,1574],"tr",{},[1562,1563,1564,1565],"th",{},"Use ",[484,1566,490],{},[1562,1568,1564,1569,1571,1572],{},[484,1570,1078],{}," \u002F ",[484,1573,1099],{},[1562,1575,1564,1576],{},[484,1577,1206],{},[1579,1580,1581,1593,1604],"tbody",{},[1559,1582,1583,1587,1590],{},[1584,1585,1586],"td",{},"Quick one-off events",[1584,1588,1589],{},"Scripts, jobs, workers, queues, HTTP without a framework",[1584,1591,1592],{},"API routes with a framework integration",[1559,1594,1595,1598,1601],{},[1584,1596,1597],{},"No context accumulation needed",[1584,1599,1600],{},"Accumulate context over an operation",[1584,1602,1603],{},"Retrieve the request-scoped logger",[1559,1605,1606,1609,1612],{},[1584,1607,1608],{},"Client-side logging",[1584,1610,1611],{},"Wide events (one log per operation)",[1584,1613,1614],{},"Access the auto-managed wide event",[1548,1616,1618],{"id":1617},"service-identification","Service Identification",[470,1620,1621],{},"In multi-service architectures, differentiate which service a log belongs to using either route-based configuration or explicit service names.",[1623,1624,1626],"h4",{"id":1625},"route-based-configuration","Route-Based Configuration",[470,1628,1629,1630,659],{},"Configure service names per route pattern in your ",[484,1631,1632],{},"nuxt.config.ts",[554,1634,1636],{"className":556,"code":1635,"filename":1632,"language":559,"meta":560,"style":560},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n\n  evlog: {\n    env: {\n      service: 'default-service',\n    },\n    routes: {\n      '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n      '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n      '\u002Fapi\u002Fbooking\u002F**': { service: 'booking-service' },\n    },\n  },\n})\n",[484,1637,1638,1652,1675,1679,1688,1697,1713,1718,1727,1755,1781,1807,1811,1816],{"__ignoreMap":560},[564,1639,1640,1642,1644,1647,1649],{"class":566,"line":567},[564,1641,1243],{"class":570},[564,1643,1246],{"class":570},[564,1645,1646],{"class":613}," defineNuxtConfig",[564,1648,616],{"class":578},[564,1650,1651],{"class":574},"{\n",[564,1653,1654,1657,1659,1662,1664,1667,1669,1672],{"class":566,"line":598},[564,1655,1656],{"class":655},"  modules",[564,1658,659],{"class":574},[564,1660,1661],{"class":578}," [",[564,1663,619],{"class":574},[564,1665,1666],{"class":591},"evlog\u002Fnuxt",[564,1668,619],{"class":574},[564,1670,1671],{"class":578},"]",[564,1673,1674],{"class":574},",\n",[564,1676,1677],{"class":566,"line":605},[564,1678,602],{"emptyLinePlaceholder":601},[564,1680,1681,1684,1686],{"class":566,"line":640},[564,1682,1683],{"class":655},"  evlog",[564,1685,659],{"class":574},[564,1687,1270],{"class":574},[564,1689,1690,1693,1695],{"class":566,"line":687},[564,1691,1692],{"class":655},"    env",[564,1694,659],{"class":574},[564,1696,1270],{"class":574},[564,1698,1699,1702,1704,1706,1709,1711],{"class":566,"line":933},[564,1700,1701],{"class":655},"      service",[564,1703,659],{"class":574},[564,1705,588],{"class":574},[564,1707,1708],{"class":591},"default-service",[564,1710,619],{"class":574},[564,1712,1674],{"class":574},[564,1714,1715],{"class":566,"line":938},[564,1716,1717],{"class":574},"    },\n",[564,1719,1720,1723,1725],{"class":566,"line":974},[564,1721,1722],{"class":655},"    routes",[564,1724,659],{"class":574},[564,1726,1270],{"class":574},[564,1728,1729,1732,1735,1737,1739,1741,1743,1745,1747,1750,1752],{"class":566,"line":1006},[564,1730,1731],{"class":574},"      '",[564,1733,1734],{"class":655},"\u002Fapi\u002Fauth\u002F**",[564,1736,619],{"class":574},[564,1738,659],{"class":574},[564,1740,575],{"class":574},[564,1742,863],{"class":655},[564,1744,659],{"class":574},[564,1746,588],{"class":574},[564,1748,1749],{"class":591},"auth-service",[564,1751,619],{"class":574},[564,1753,1754],{"class":574}," },\n",[564,1756,1757,1759,1762,1764,1766,1768,1770,1772,1774,1777,1779],{"class":566,"line":1407},[564,1758,1731],{"class":574},[564,1760,1761],{"class":655},"\u002Fapi\u002Fpayment\u002F**",[564,1763,619],{"class":574},[564,1765,659],{"class":574},[564,1767,575],{"class":574},[564,1769,863],{"class":655},[564,1771,659],{"class":574},[564,1773,588],{"class":574},[564,1775,1776],{"class":591},"payment-service",[564,1778,619],{"class":574},[564,1780,1754],{"class":574},[564,1782,1783,1785,1788,1790,1792,1794,1796,1798,1800,1803,1805],{"class":566,"line":1435},[564,1784,1731],{"class":574},[564,1786,1787],{"class":655},"\u002Fapi\u002Fbooking\u002F**",[564,1789,619],{"class":574},[564,1791,659],{"class":574},[564,1793,575],{"class":574},[564,1795,863],{"class":655},[564,1797,659],{"class":574},[564,1799,588],{"class":574},[564,1801,1802],{"class":591},"booking-service",[564,1804,619],{"class":574},[564,1806,1754],{"class":574},[564,1808,1809],{"class":566,"line":1440},[564,1810,1717],{"class":574},[564,1812,1813],{"class":566,"line":1472},[564,1814,1815],{"class":574},"  },\n",[564,1817,1819,1821],{"class":566,"line":1818},14,[564,1820,1475],{"class":574},[564,1822,637],{"class":578},[470,1824,1825],{},"Logs from routes matching these patterns will automatically include the configured service name:",[554,1827,1829],{"className":717,"code":1828,"filename":719,"language":720,"meta":560,"style":560},"21:57:10.442 INFO [auth-service] POST \u002Fapi\u002Fauth\u002Flogin 200 in 1ms\n  ├─ requestId: 88ced16a-bef2-4483-86cb-2b4fb677ea52\n  ├─ user: id=user_123 email=demo@example.com\n  └─ action: login\n",[484,1830,1831,1841,1851,1863],{"__ignoreMap":560},[564,1832,1833,1836,1838],{"class":566,"line":567},[564,1834,1835],{"class":727},"21:57:10.442",[564,1837,1029],{"class":591},[564,1839,1840],{"class":578}," [auth-service] POST \u002Fapi\u002Fauth\u002Flogin 200 in 1ms\n",[564,1842,1843,1845,1848],{"class":566,"line":598},[564,1844,1037],{"class":727},[564,1846,1847],{"class":591}," requestId:",[564,1849,1850],{"class":591}," 88ced16a-bef2-4483-86cb-2b4fb677ea52\n",[564,1852,1853,1855,1857,1860],{"class":566,"line":605},[564,1854,1037],{"class":727},[564,1856,1498],{"class":591},[564,1858,1859],{"class":591}," id=user_123",[564,1861,1862],{"class":591}," email=demo@example.com\n",[564,1864,1865,1867,1870],{"class":566,"line":640},[564,1866,1058],{"class":727},[564,1868,1869],{"class":591}," action:",[564,1871,1872],{"class":591}," login\n",[1623,1874,1876],{"id":1875},"explicit-service-parameter","Explicit Service Parameter",[470,1878,1879,1880,659],{},"Override the service name for specific routes using the second parameter of ",[484,1881,486],{},[554,1883,1886],{"className":556,"code":1884,"filename":1885,"language":559,"meta":560,"style":560},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler((event) => {\n  const log = useLogger(event, 'legacy-service')\n\n  log.set({ action: 'process_legacy_request' })\n\n  return { success: true }\n})\n","server\u002Fapi\u002Flegacy\u002Fprocess.post.ts",[484,1887,1888,1906,1910,1930,1955,1959,1986,1990,2004],{"__ignoreMap":560},[564,1889,1890,1892,1894,1896,1898,1900,1902,1904],{"class":566,"line":567},[564,1891,571],{"class":570},[564,1893,575],{"class":574},[564,1895,1224],{"class":578},[564,1897,582],{"class":574},[564,1899,585],{"class":570},[564,1901,588],{"class":574},[564,1903,592],{"class":591},[564,1905,595],{"class":574},[564,1907,1908],{"class":566,"line":598},[564,1909,602],{"emptyLinePlaceholder":601},[564,1911,1912,1914,1916,1918,1920,1922,1924,1926,1928],{"class":566,"line":605},[564,1913,1243],{"class":570},[564,1915,1246],{"class":570},[564,1917,1249],{"class":613},[564,1919,616],{"class":578},[564,1921,616],{"class":574},[564,1923,1261],{"class":1260},[564,1925,1264],{"class":574},[564,1927,1267],{"class":887},[564,1929,1270],{"class":574},[564,1931,1932,1934,1936,1938,1940,1942,1944,1946,1948,1951,1953],{"class":566,"line":640},[564,1933,1275],{"class":887},[564,1935,579],{"class":578},[564,1937,1280],{"class":574},[564,1939,1224],{"class":613},[564,1941,616],{"class":655},[564,1943,1261],{"class":578},[564,1945,627],{"class":574},[564,1947,588],{"class":574},[564,1949,1950],{"class":591},"legacy-service",[564,1952,619],{"class":574},[564,1954,637],{"class":655},[564,1956,1957],{"class":566,"line":687},[564,1958,602],{"emptyLinePlaceholder":601},[564,1960,1961,1963,1965,1967,1969,1971,1973,1975,1977,1980,1982,1984],{"class":566,"line":933},[564,1962,1297],{"class":578},[564,1964,610],{"class":574},[564,1966,945],{"class":613},[564,1968,616],{"class":655},[564,1970,652],{"class":574},[564,1972,656],{"class":655},[564,1974,659],{"class":574},[564,1976,588],{"class":574},[564,1978,1979],{"class":591},"process_legacy_request",[564,1981,619],{"class":574},[564,1983,582],{"class":574},[564,1985,637],{"class":655},[564,1987,1988],{"class":566,"line":938},[564,1989,602],{"emptyLinePlaceholder":601},[564,1991,1992,1994,1996,1998,2000,2002],{"class":566,"line":974},[564,1993,1443],{"class":570},[564,1995,575],{"class":574},[564,1997,1448],{"class":655},[564,1999,659],{"class":574},[564,2001,1454],{"class":1453},[564,2003,1469],{"class":574},[564,2005,2006,2008],{"class":566,"line":1006},[564,2007,1475],{"class":574},[564,2009,637],{"class":578},[474,2011,2012,2015,2016,2018,2019,2022],{"color":476,"icon":13},[479,2013,2014],{},"Priority order:"," Explicit ",[484,2017,486],{}," parameter > Route configuration > ",[484,2020,2021],{},"env.service"," > Auto-detected from environment",[543,2024,2026],{"id":2025},"createerror-structured-errors","createError (Structured Errors)",[470,2028,1564,2029,2032],{},[484,2030,2031],{},"createError()"," to throw errors with actionable context:",[551,2034,2035,2156],{},[554,2036,2038],{"className":556,"code":2037,"filename":1213,"language":559,"meta":560,"style":560},"import { createError } from 'evlog'\n\nthrow createError({\n  message: 'Payment failed',\n  status: 402,\n  why: 'Card declined by issuer',\n  fix: 'Try a different payment method',\n  link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n})\n",[484,2039,2040,2059,2063,2074,2090,2102,2118,2134,2150],{"__ignoreMap":560},[564,2041,2042,2044,2046,2049,2051,2053,2055,2057],{"class":566,"line":567},[564,2043,571],{"class":570},[564,2045,575],{"class":574},[564,2047,2048],{"class":578}," createError",[564,2050,582],{"class":574},[564,2052,585],{"class":570},[564,2054,588],{"class":574},[564,2056,592],{"class":591},[564,2058,595],{"class":574},[564,2060,2061],{"class":566,"line":598},[564,2062,602],{"emptyLinePlaceholder":601},[564,2064,2065,2068,2070,2072],{"class":566,"line":605},[564,2066,2067],{"class":570},"throw",[564,2069,2048],{"class":613},[564,2071,616],{"class":578},[564,2073,1651],{"class":574},[564,2075,2076,2079,2081,2083,2086,2088],{"class":566,"line":640},[564,2077,2078],{"class":655},"  message",[564,2080,659],{"class":574},[564,2082,588],{"class":574},[564,2084,2085],{"class":591},"Payment failed",[564,2087,619],{"class":574},[564,2089,1674],{"class":574},[564,2091,2092,2095,2097,2100],{"class":566,"line":687},[564,2093,2094],{"class":655},"  status",[564,2096,659],{"class":574},[564,2098,2099],{"class":964}," 402",[564,2101,1674],{"class":574},[564,2103,2104,2107,2109,2111,2114,2116],{"class":566,"line":933},[564,2105,2106],{"class":655},"  why",[564,2108,659],{"class":574},[564,2110,588],{"class":574},[564,2112,2113],{"class":591},"Card declined by issuer",[564,2115,619],{"class":574},[564,2117,1674],{"class":574},[564,2119,2120,2123,2125,2127,2130,2132],{"class":566,"line":938},[564,2121,2122],{"class":655},"  fix",[564,2124,659],{"class":574},[564,2126,588],{"class":574},[564,2128,2129],{"class":591},"Try a different payment method",[564,2131,619],{"class":574},[564,2133,1674],{"class":574},[564,2135,2136,2139,2141,2143,2146,2148],{"class":566,"line":974},[564,2137,2138],{"class":655},"  link",[564,2140,659],{"class":574},[564,2142,588],{"class":574},[564,2144,2145],{"class":591},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[564,2147,619],{"class":574},[564,2149,1674],{"class":574},[564,2151,2152,2154],{"class":566,"line":1006},[564,2153,1475],{"class":574},[564,2155,637],{"class":578},[554,2157,2162],{"className":2158,"code":2159,"filename":2160,"language":2161,"meta":560,"style":560},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"statusCode\": 402,\n  \"message\": \"Payment failed\",\n  \"data\": {\n    \"why\": \"Card declined by issuer\",\n    \"fix\": \"Try a different payment method\",\n    \"link\": \"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined\"\n  }\n}\n","Response","json",[484,2163,2164,2168,2185,2205,2218,2238,2257,2275,2280],{"__ignoreMap":560},[564,2165,2166],{"class":566,"line":567},[564,2167,1651],{"class":574},[564,2169,2170,2173,2176,2179,2181,2183],{"class":566,"line":598},[564,2171,2172],{"class":574},"  \"",[564,2174,2175],{"class":887},"statusCode",[564,2177,2178],{"class":574},"\"",[564,2180,659],{"class":574},[564,2182,2099],{"class":964},[564,2184,1674],{"class":574},[564,2186,2187,2189,2192,2194,2196,2199,2201,2203],{"class":566,"line":605},[564,2188,2172],{"class":574},[564,2190,2191],{"class":887},"message",[564,2193,2178],{"class":574},[564,2195,659],{"class":574},[564,2197,2198],{"class":574}," \"",[564,2200,2085],{"class":591},[564,2202,2178],{"class":574},[564,2204,1674],{"class":574},[564,2206,2207,2209,2212,2214,2216],{"class":566,"line":640},[564,2208,2172],{"class":574},[564,2210,2211],{"class":887},"data",[564,2213,2178],{"class":574},[564,2215,659],{"class":574},[564,2217,1270],{"class":574},[564,2219,2220,2223,2226,2228,2230,2232,2234,2236],{"class":566,"line":687},[564,2221,2222],{"class":574},"    \"",[564,2224,2225],{"class":727},"why",[564,2227,2178],{"class":574},[564,2229,659],{"class":574},[564,2231,2198],{"class":574},[564,2233,2113],{"class":591},[564,2235,2178],{"class":574},[564,2237,1674],{"class":574},[564,2239,2240,2242,2245,2247,2249,2251,2253,2255],{"class":566,"line":933},[564,2241,2222],{"class":574},[564,2243,2244],{"class":727},"fix",[564,2246,2178],{"class":574},[564,2248,659],{"class":574},[564,2250,2198],{"class":574},[564,2252,2129],{"class":591},[564,2254,2178],{"class":574},[564,2256,1674],{"class":574},[564,2258,2259,2261,2264,2266,2268,2270,2272],{"class":566,"line":938},[564,2260,2222],{"class":574},[564,2262,2263],{"class":727},"link",[564,2265,2178],{"class":574},[564,2267,659],{"class":574},[564,2269,2198],{"class":574},[564,2271,2145],{"class":591},[564,2273,2274],{"class":574},"\"\n",[564,2276,2277],{"class":566,"line":974},[564,2278,2279],{"class":574},"  }\n",[564,2281,2282],{"class":566,"line":1006},[564,2283,2284],{"class":574},"}\n",[1548,2286,2288],{"id":2287},"error-fields","Error Fields",[1553,2290,2291,2304],{},[1556,2292,2293],{},[1559,2294,2295,2298,2301],{},[1562,2296,2297],{},"Field",[1562,2299,2300],{},"Required",[1562,2302,2303],{},"Description",[1579,2305,2306,2318,2331,2342,2353,2364,2376],{},[1559,2307,2308,2312,2315],{},[1584,2309,2310],{},[484,2311,2191],{},[1584,2313,2314],{},"Yes",[1584,2316,2317],{},"What happened (user-facing)",[1559,2319,2320,2325,2328],{},[1584,2321,2322],{},[484,2323,2324],{},"status",[1584,2326,2327],{},"No",[1584,2329,2330],{},"HTTP status code (default: 500)",[1559,2332,2333,2337,2339],{},[1584,2334,2335],{},[484,2336,2225],{},[1584,2338,2327],{},[1584,2340,2341],{},"Technical reason (for debugging)",[1559,2343,2344,2348,2350],{},[1584,2345,2346],{},[484,2347,2244],{},[1584,2349,2327],{},[1584,2351,2352],{},"Actionable solution",[1559,2354,2355,2359,2361],{},[1584,2356,2357],{},[484,2358,2263],{},[1584,2360,2327],{},[1584,2362,2363],{},"Documentation URL for more info",[1559,2365,2366,2371,2373],{},[1584,2367,2368],{},[484,2369,2370],{},"cause",[1584,2372,2327],{},[1584,2374,2375],{},"Original error (if wrapping)",[1559,2377,2378,2383,2385],{},[1584,2379,2380],{},[484,2381,2382],{},"internal",[1584,2384,2327],{},[1584,2386,2387,2388],{},"Backend-only fields for logs and wide events — never included in HTTP JSON or ",[484,2389,2390],{},"parseError()",[1548,2392,2394],{"id":2393},"frontend-integration","Frontend Integration",[470,2396,1564,2397,2399],{},[484,2398,2390],{}," to extract all error fields on the client:",[554,2401,2404],{"className":556,"code":2402,"filename":2403,"language":559,"meta":560,"style":560},"import { parseError } from 'evlog'\n\nexport async function checkout(cart: Cart) {\n  try {\n    await $fetch('\u002Fapi\u002Fcheckout', { method: 'POST', body: cart })\n  } catch (err) {\n    const error = parseError(err)\n\n    toast.add({\n      title: error.message,\n      description: error.why,\n      color: 'error',\n      actions: error.link\n        ? [{ label: 'Learn more', onClick: () => window.open(error.link) }]\n        : undefined,\n    })\n\n    if (error.fix) {\n      console.info(`Fix: ${error.fix}`)\n    }\n  }\n}\n","composables\u002FuseCheckout.ts",[484,2405,2406,2425,2429,2456,2463,2506,2524,2541,2545,2559,2574,2589,2604,2618,2674,2683,2691,2696,2714,2746,2752,2757],{"__ignoreMap":560},[564,2407,2408,2410,2412,2415,2417,2419,2421,2423],{"class":566,"line":567},[564,2409,571],{"class":570},[564,2411,575],{"class":574},[564,2413,2414],{"class":578}," parseError",[564,2416,582],{"class":574},[564,2418,585],{"class":570},[564,2420,588],{"class":574},[564,2422,592],{"class":591},[564,2424,595],{"class":574},[564,2426,2427],{"class":566,"line":598},[564,2428,602],{"emptyLinePlaceholder":601},[564,2430,2431,2433,2436,2439,2442,2444,2447,2449,2452,2454],{"class":566,"line":605},[564,2432,1243],{"class":570},[564,2434,2435],{"class":887}," async",[564,2437,2438],{"class":887}," function",[564,2440,2441],{"class":613}," checkout",[564,2443,616],{"class":574},[564,2445,2446],{"class":1260},"cart",[564,2448,659],{"class":574},[564,2450,2451],{"class":727}," Cart",[564,2453,1264],{"class":574},[564,2455,1270],{"class":574},[564,2457,2458,2461],{"class":566,"line":640},[564,2459,2460],{"class":570},"  try",[564,2462,1270],{"class":574},[564,2464,2465,2468,2471,2473,2475,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2498,2500,2502,2504],{"class":566,"line":687},[564,2466,2467],{"class":570},"    await",[564,2469,2470],{"class":613}," $fetch",[564,2472,616],{"class":655},[564,2474,619],{"class":574},[564,2476,1176],{"class":591},[564,2478,619],{"class":574},[564,2480,627],{"class":574},[564,2482,575],{"class":574},[564,2484,1155],{"class":655},[564,2486,659],{"class":574},[564,2488,588],{"class":574},[564,2490,1162],{"class":591},[564,2492,619],{"class":574},[564,2494,627],{"class":574},[564,2496,2497],{"class":655}," body",[564,2499,659],{"class":574},[564,2501,1355],{"class":578},[564,2503,582],{"class":574},[564,2505,637],{"class":655},[564,2507,2508,2511,2514,2516,2519,2522],{"class":566,"line":933},[564,2509,2510],{"class":574},"  }",[564,2512,2513],{"class":570}," catch",[564,2515,1257],{"class":655},[564,2517,2518],{"class":578},"err",[564,2520,2521],{"class":655},") ",[564,2523,1651],{"class":574},[564,2525,2526,2529,2531,2533,2535,2537,2539],{"class":566,"line":938},[564,2527,2528],{"class":887},"    const",[564,2530,671],{"class":578},[564,2532,1280],{"class":574},[564,2534,2414],{"class":613},[564,2536,616],{"class":655},[564,2538,2518],{"class":578},[564,2540,637],{"class":655},[564,2542,2543],{"class":566,"line":974},[564,2544,602],{"emptyLinePlaceholder":601},[564,2546,2547,2550,2552,2555,2557],{"class":566,"line":1006},[564,2548,2549],{"class":578},"    toast",[564,2551,610],{"class":574},[564,2553,2554],{"class":613},"add",[564,2556,616],{"class":655},[564,2558,1651],{"class":574},[564,2560,2561,2564,2566,2568,2570,2572],{"class":566,"line":1407},[564,2562,2563],{"class":655},"      title",[564,2565,659],{"class":574},[564,2567,671],{"class":578},[564,2569,610],{"class":574},[564,2571,2191],{"class":578},[564,2573,1674],{"class":574},[564,2575,2576,2579,2581,2583,2585,2587],{"class":566,"line":1435},[564,2577,2578],{"class":655},"      description",[564,2580,659],{"class":574},[564,2582,671],{"class":578},[564,2584,610],{"class":574},[564,2586,2225],{"class":578},[564,2588,1674],{"class":574},[564,2590,2591,2594,2596,2598,2600,2602],{"class":566,"line":1440},[564,2592,2593],{"class":655},"      color",[564,2595,659],{"class":574},[564,2597,588],{"class":574},[564,2599,647],{"class":591},[564,2601,619],{"class":574},[564,2603,1674],{"class":574},[564,2605,2606,2609,2611,2613,2615],{"class":566,"line":1472},[564,2607,2608],{"class":655},"      actions",[564,2610,659],{"class":574},[564,2612,671],{"class":578},[564,2614,610],{"class":574},[564,2616,2617],{"class":578},"link\n",[564,2619,2620,2623,2625,2627,2630,2632,2634,2637,2639,2641,2644,2646,2649,2651,2654,2656,2659,2661,2663,2665,2667,2669,2671],{"class":566,"line":1818},[564,2621,2622],{"class":574},"        ?",[564,2624,1661],{"class":655},[564,2626,652],{"class":574},[564,2628,2629],{"class":655}," label",[564,2631,659],{"class":574},[564,2633,588],{"class":574},[564,2635,2636],{"class":591},"Learn more",[564,2638,619],{"class":574},[564,2640,627],{"class":574},[564,2642,2643],{"class":613}," onClick",[564,2645,659],{"class":574},[564,2647,2648],{"class":574}," ()",[564,2650,1267],{"class":887},[564,2652,2653],{"class":578}," window",[564,2655,610],{"class":574},[564,2657,2658],{"class":613},"open",[564,2660,616],{"class":655},[564,2662,647],{"class":578},[564,2664,610],{"class":574},[564,2666,2263],{"class":578},[564,2668,2521],{"class":655},[564,2670,1475],{"class":574},[564,2672,2673],{"class":655},"]\n",[564,2675,2677,2680],{"class":566,"line":2676},15,[564,2678,2679],{"class":574},"        :",[564,2681,2682],{"class":574}," undefined,\n",[564,2684,2686,2689],{"class":566,"line":2685},16,[564,2687,2688],{"class":574},"    }",[564,2690,637],{"class":655},[564,2692,2694],{"class":566,"line":2693},17,[564,2695,602],{"emptyLinePlaceholder":601},[564,2697,2699,2702,2704,2706,2708,2710,2712],{"class":566,"line":2698},18,[564,2700,2701],{"class":570},"    if",[564,2703,1257],{"class":655},[564,2705,647],{"class":578},[564,2707,610],{"class":574},[564,2709,2244],{"class":578},[564,2711,2521],{"class":655},[564,2713,1651],{"class":574},[564,2715,2717,2720,2722,2724,2726,2729,2732,2735,2737,2739,2741,2744],{"class":566,"line":2716},19,[564,2718,2719],{"class":578},"      console",[564,2721,610],{"class":574},[564,2723,476],{"class":613},[564,2725,616],{"class":655},[564,2727,2728],{"class":574},"`",[564,2730,2731],{"class":591},"Fix: ",[564,2733,2734],{"class":574},"${",[564,2736,647],{"class":578},[564,2738,610],{"class":574},[564,2740,2244],{"class":578},[564,2742,2743],{"class":574},"}`",[564,2745,637],{"class":655},[564,2747,2749],{"class":566,"line":2748},20,[564,2750,2751],{"class":574},"    }\n",[564,2753,2755],{"class":566,"line":2754},21,[564,2756,2279],{"class":574},[564,2758,2760],{"class":566,"line":2759},22,[564,2761,2284],{"class":574},[543,2763,2765],{"id":2764},"log-client-side","log (Client-Side)",[470,2767,2768,2769,2771],{},"The same ",[484,2770,490],{}," API works on the client side, outputting to the browser console:",[551,2773,2774,3002],{},[554,2775,2780],{"className":2776,"code":2777,"filename":2778,"language":2779,"meta":560,"style":560},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nasync function handleCheckout() {\n  log.info('checkout', 'User initiated checkout')\n\n  try {\n    await $fetch('\u002Fapi\u002Fcheckout', { method: 'POST' })\n    log.info({ action: 'checkout', status: 'success' })\n  } catch (err) {\n    log.error({ action: 'checkout', error: 'failed' })\n  }\n}\n\u003C\u002Fscript>\n","components\u002FCheckoutButton.vue","vue",[484,2781,2782,2808,2822,2850,2854,2860,2892,2932,2946,2985,2989,2993],{"__ignoreMap":560},[564,2783,2784,2787,2790,2793,2796,2798,2800,2803,2805],{"class":566,"line":567},[564,2785,2786],{"class":574},"\u003C",[564,2788,2789],{"class":655},"script",[564,2791,2792],{"class":887}," setup",[564,2794,2795],{"class":887}," lang",[564,2797,745],{"class":574},[564,2799,2178],{"class":574},[564,2801,2802],{"class":591},"ts",[564,2804,2178],{"class":574},[564,2806,2807],{"class":574},">\n",[564,2809,2810,2812,2814,2817,2820],{"class":566,"line":598},[564,2811,1254],{"class":887},[564,2813,2438],{"class":887},[564,2815,2816],{"class":613}," handleCheckout",[564,2818,2819],{"class":574},"()",[564,2821,1270],{"class":574},[564,2823,2824,2826,2828,2830,2832,2834,2837,2839,2841,2843,2846,2848],{"class":566,"line":605},[564,2825,1297],{"class":578},[564,2827,610],{"class":574},[564,2829,476],{"class":613},[564,2831,616],{"class":655},[564,2833,619],{"class":574},[564,2835,2836],{"class":591},"checkout",[564,2838,619],{"class":574},[564,2840,627],{"class":574},[564,2842,588],{"class":574},[564,2844,2845],{"class":591},"User initiated checkout",[564,2847,619],{"class":574},[564,2849,637],{"class":655},[564,2851,2852],{"class":566,"line":640},[564,2853,602],{"emptyLinePlaceholder":601},[564,2855,2856,2858],{"class":566,"line":687},[564,2857,2460],{"class":570},[564,2859,1270],{"class":574},[564,2861,2862,2864,2866,2868,2870,2872,2874,2876,2878,2880,2882,2884,2886,2888,2890],{"class":566,"line":933},[564,2863,2467],{"class":570},[564,2865,2470],{"class":613},[564,2867,616],{"class":655},[564,2869,619],{"class":574},[564,2871,1176],{"class":591},[564,2873,619],{"class":574},[564,2875,627],{"class":574},[564,2877,575],{"class":574},[564,2879,1155],{"class":655},[564,2881,659],{"class":574},[564,2883,588],{"class":574},[564,2885,1162],{"class":591},[564,2887,619],{"class":574},[564,2889,582],{"class":574},[564,2891,637],{"class":655},[564,2893,2894,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917,2920,2922,2924,2926,2928,2930],{"class":566,"line":938},[564,2895,2896],{"class":578},"    log",[564,2898,610],{"class":574},[564,2900,476],{"class":613},[564,2902,616],{"class":655},[564,2904,652],{"class":574},[564,2906,656],{"class":655},[564,2908,659],{"class":574},[564,2910,588],{"class":574},[564,2912,2836],{"class":591},[564,2914,619],{"class":574},[564,2916,627],{"class":574},[564,2918,2919],{"class":655}," status",[564,2921,659],{"class":574},[564,2923,588],{"class":574},[564,2925,1539],{"class":591},[564,2927,619],{"class":574},[564,2929,582],{"class":574},[564,2931,637],{"class":655},[564,2933,2934,2936,2938,2940,2942,2944],{"class":566,"line":974},[564,2935,2510],{"class":574},[564,2937,2513],{"class":570},[564,2939,1257],{"class":655},[564,2941,2518],{"class":578},[564,2943,2521],{"class":655},[564,2945,1651],{"class":574},[564,2947,2948,2950,2952,2954,2956,2958,2960,2962,2964,2966,2968,2970,2972,2974,2976,2979,2981,2983],{"class":566,"line":1006},[564,2949,2896],{"class":578},[564,2951,610],{"class":574},[564,2953,647],{"class":613},[564,2955,616],{"class":655},[564,2957,652],{"class":574},[564,2959,656],{"class":655},[564,2961,659],{"class":574},[564,2963,588],{"class":574},[564,2965,2836],{"class":591},[564,2967,619],{"class":574},[564,2969,627],{"class":574},[564,2971,671],{"class":655},[564,2973,659],{"class":574},[564,2975,588],{"class":574},[564,2977,2978],{"class":591},"failed",[564,2980,619],{"class":574},[564,2982,582],{"class":574},[564,2984,637],{"class":655},[564,2986,2987],{"class":566,"line":1407},[564,2988,2279],{"class":574},[564,2990,2991],{"class":566,"line":1435},[564,2992,2284],{"class":574},[564,2994,2995,2998,3000],{"class":566,"line":1440},[564,2996,2997],{"class":574},"\u003C\u002F",[564,2999,2789],{"class":655},[564,3001,2807],{"class":574},[554,3003,3006],{"className":556,"code":3004,"filename":3005,"language":559,"meta":560,"style":560},"export function useAnalytics() {\n  function trackEvent(event: string, data?: Record\u003Cstring, unknown>) {\n    log.info('analytics', `Event: ${event}`)\n    if (data) {\n      log.debug({ event, ...data })\n    }\n  }\n\n  return { trackEvent }\n}\n","composables\u002FuseAnalytics.ts",[484,3007,3008,3021,3064,3097,3109,3137,3141,3145,3149,3159],{"__ignoreMap":560},[564,3009,3010,3012,3014,3017,3019],{"class":566,"line":567},[564,3011,1243],{"class":570},[564,3013,2438],{"class":887},[564,3015,3016],{"class":613}," useAnalytics",[564,3018,2819],{"class":574},[564,3020,1270],{"class":574},[564,3022,3023,3026,3029,3031,3033,3035,3038,3040,3043,3046,3049,3051,3054,3056,3059,3062],{"class":566,"line":598},[564,3024,3025],{"class":887},"  function",[564,3027,3028],{"class":613}," trackEvent",[564,3030,616],{"class":574},[564,3032,1261],{"class":1260},[564,3034,659],{"class":574},[564,3036,3037],{"class":727}," string",[564,3039,627],{"class":574},[564,3041,3042],{"class":1260}," data",[564,3044,3045],{"class":574},"?:",[564,3047,3048],{"class":727}," Record",[564,3050,2786],{"class":574},[564,3052,3053],{"class":727},"string",[564,3055,627],{"class":574},[564,3057,3058],{"class":727}," unknown",[564,3060,3061],{"class":574},">)",[564,3063,1270],{"class":574},[564,3065,3066,3068,3070,3072,3074,3076,3079,3081,3083,3086,3089,3091,3093,3095],{"class":566,"line":605},[564,3067,2896],{"class":578},[564,3069,610],{"class":574},[564,3071,476],{"class":613},[564,3073,616],{"class":655},[564,3075,619],{"class":574},[564,3077,3078],{"class":591},"analytics",[564,3080,619],{"class":574},[564,3082,627],{"class":574},[564,3084,3085],{"class":574}," `",[564,3087,3088],{"class":591},"Event: ",[564,3090,2734],{"class":574},[564,3092,1261],{"class":578},[564,3094,2743],{"class":574},[564,3096,637],{"class":655},[564,3098,3099,3101,3103,3105,3107],{"class":566,"line":640},[564,3100,2701],{"class":570},[564,3102,1257],{"class":655},[564,3104,2211],{"class":578},[564,3106,2521],{"class":655},[564,3108,1651],{"class":574},[564,3110,3111,3114,3116,3119,3121,3123,3126,3128,3131,3133,3135],{"class":566,"line":687},[564,3112,3113],{"class":578},"      log",[564,3115,610],{"class":574},[564,3117,3118],{"class":613},"debug",[564,3120,616],{"class":655},[564,3122,652],{"class":574},[564,3124,3125],{"class":578}," event",[564,3127,627],{"class":574},[564,3129,3130],{"class":574}," ...",[564,3132,2211],{"class":578},[564,3134,582],{"class":574},[564,3136,637],{"class":655},[564,3138,3139],{"class":566,"line":933},[564,3140,2751],{"class":574},[564,3142,3143],{"class":566,"line":938},[564,3144,2279],{"class":574},[564,3146,3147],{"class":566,"line":974},[564,3148,602],{"emptyLinePlaceholder":601},[564,3150,3151,3153,3155,3157],{"class":566,"line":1006},[564,3152,1443],{"class":570},[564,3154,575],{"class":574},[564,3156,3028],{"class":578},[564,3158,1469],{"class":574},[564,3160,3161],{"class":566,"line":1407},[564,3162,2284],{"class":574},[474,3164,3165,3166,3168],{"color":789,"icon":790},"See ",[532,3167,255],{"href":256}," for transport configuration, identity context, and browser drain setup.",[543,3170,3172],{"id":3171},"next-steps","Next Steps",[507,3174,3175,3181,3186,3191,3196],{},[510,3176,3177,3180],{},[532,3178,3179],{"href":37},"Logging Overview",": Understand all three logging modes",[510,3182,3183,3185],{},[532,3184,46],{"href":47},": Learn how to design effective wide events",[510,3187,3188,3190],{},[532,3189,71],{"href":72},": Add compile-time type safety to your wide events",[510,3192,3193,3195],{},[532,3194,51],{"href":52},": Master error handling with evlog",[510,3197,3198,3200],{},[532,3199,452],{"href":453},": Security guidelines and production tips",[3202,3203,3204],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":560,"searchDepth":598,"depth":598,"links":3206},[3207,3208,3209,3213,3217,3218],{"id":545,"depth":598,"text":546},{"id":797,"depth":598,"text":798},{"id":1199,"depth":598,"text":1200,"children":3210},[3211,3212],{"id":1550,"depth":605,"text":1551},{"id":1617,"depth":605,"text":1618},{"id":2025,"depth":598,"text":2026,"children":3214},[3215,3216],{"id":2287,"depth":605,"text":2288},{"id":2393,"depth":605,"text":2394},{"id":2764,"depth":598,"text":2765},{"id":3171,"depth":598,"text":3172},"Get up and running with evlog in minutes. Learn the log API, createLogger for wide events, useLogger for requests, and structured errors.","md",[3222,3224],{"label":3179,"icon":39,"to":37,"color":789,"variant":3223},"subtle",{"label":51,"icon":54,"to":52,"color":789,"variant":3223},{},{"icon":28},{"title":25,"description":3219},"PE_ERwriUMpc116rOam2Fnge1CSi_uo1ZOkgoylWQ5Q",[3230,3232],{"title":20,"path":21,"stem":22,"description":3231,"icon":23,"children":-1},"Install evlog in your TypeScript project. Supports Nuxt, Next.js, SvelteKit, Hono, Express, Fastify, Elysia, NestJS, and standalone scripts.",{"title":36,"path":37,"stem":38,"description":3233,"icon":39,"children":-1},"The mental model — three logging modes, the wide event lifecycle, sampling, typed fields, and redaction. Read this section in order if you're new; pick what you need if you're not.",1784203194829]