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