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