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