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