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