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