[{"data":1,"prerenderedAt":6042},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-nextjs":402,"-frameworks-nextjs-surround":6037},[4,35,159,201,289,299,386],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,99,127],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Catalogs","\u002Flogging\u002Fcatalogs","2.logging\u002F4.catalogs","i-lucide-book-open",{"title":66,"path":67,"stem":68,"icon":69},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F5.client-logging","i-lucide-monitor",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":34},"AI SDK","i-simple-icons-vercel","\u002Flogging\u002Fai-sdk","2.logging\u002F6.ai-sdk",[76,79,84,89,94],{"title":41,"path":77,"stem":78,"icon":44},"\u002Flogging\u002Fai-sdk\u002Foverview","2.logging\u002F6.ai-sdk\u002F01.overview",{"title":80,"path":81,"stem":82,"icon":83},"Usage","\u002Flogging\u002Fai-sdk\u002Fusage","2.logging\u002F6.ai-sdk\u002F02.usage","i-lucide-code",{"title":85,"path":86,"stem":87,"icon":88},"Options","\u002Flogging\u002Fai-sdk\u002Foptions","2.logging\u002F6.ai-sdk\u002F03.options","i-lucide-sliders",{"title":90,"path":91,"stem":92,"icon":93},"Metadata","\u002Flogging\u002Fai-sdk\u002Fmetadata","2.logging\u002F6.ai-sdk\u002F04.metadata","i-lucide-database",{"title":95,"path":96,"stem":97,"icon":98},"Telemetry","\u002Flogging\u002Fai-sdk\u002Ftelemetry","2.logging\u002F6.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Flogging\u002Fbetter-auth","2.logging\u002F7.better-auth",[105,108,113,118,122],{"title":41,"path":106,"stem":107,"icon":44},"\u002Flogging\u002Fbetter-auth\u002Foverview","2.logging\u002F7.better-auth\u002F01.overview",{"title":109,"path":110,"stem":111,"icon":112},"Identify User","\u002Flogging\u002Fbetter-auth\u002Fidentify-user","2.logging\u002F7.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":114,"path":115,"stem":116,"icon":117},"Middleware","\u002Flogging\u002Fbetter-auth\u002Fmiddleware","2.logging\u002F7.better-auth\u002F03.middleware","i-lucide-shield",{"title":119,"path":120,"stem":121,"icon":69},"Client Sync","\u002Flogging\u002Fbetter-auth\u002Fclient-sync","2.logging\u002F7.better-auth\u002F04.client-sync",{"title":123,"path":124,"stem":125,"icon":126},"Performance","\u002Flogging\u002Fbetter-auth\u002Fperformance","2.logging\u002F7.better-auth\u002F05.performance","i-lucide-gauge",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":34},"Audit Logs","i-lucide-shield-check","\u002Flogging\u002Faudit","2.logging\u002F8.audit",[133,136,141,146,151,155],{"title":41,"path":134,"stem":135,"icon":44},"\u002Flogging\u002Faudit\u002Foverview","2.logging\u002F8.audit\u002F01.overview",{"title":137,"path":138,"stem":139,"icon":140},"Schema","\u002Flogging\u002Faudit\u002Fschema","2.logging\u002F8.audit\u002F02.schema","i-lucide-file-text",{"title":142,"path":143,"stem":144,"icon":145},"Recording","\u002Flogging\u002Faudit\u002Frecording","2.logging\u002F8.audit\u002F03.recording","i-lucide-pen-line",{"title":147,"path":148,"stem":149,"icon":150},"Drains","\u002Flogging\u002Faudit\u002Fpipeline","2.logging\u002F8.audit\u002F04.pipeline","i-lucide-link",{"title":152,"path":153,"stem":154,"icon":129},"Compliance","\u002Flogging\u002Faudit\u002Fcompliance","2.logging\u002F8.audit\u002F05.compliance",{"title":156,"path":157,"stem":158,"icon":64},"Recipes","\u002Flogging\u002Faudit\u002Frecipes","2.logging\u002F8.audit\u002F06.recipes",{"title":160,"path":161,"stem":162,"children":163,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[164,169,174,179,184,188,191,196],{"title":165,"path":166,"stem":167,"icon":168},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":170,"path":171,"stem":172,"icon":173},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":175,"path":176,"stem":177,"icon":178},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":180,"path":181,"stem":182,"icon":183},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":185,"path":186,"stem":187,"icon":129},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":123,"path":189,"stem":190,"icon":126},"\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance",{"title":192,"path":193,"stem":194,"icon":195},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":197,"path":198,"stem":199,"icon":200},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":202,"path":203,"stem":204,"children":205,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[206,210,215,220,225,230,235,240,245,250,255,260,265,270,274,279,284],{"title":41,"path":207,"stem":208,"icon":209},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":211,"path":212,"stem":213,"icon":214},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":216,"path":217,"stem":218,"icon":219},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":221,"path":222,"stem":223,"icon":224},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":226,"path":227,"stem":228,"icon":229},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":231,"path":232,"stem":233,"icon":234},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":236,"path":237,"stem":238,"icon":239},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":241,"path":242,"stem":243,"icon":244},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":246,"path":247,"stem":248,"icon":249},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":251,"path":252,"stem":253,"icon":254},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":256,"path":257,"stem":258,"icon":259},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":261,"path":262,"stem":263,"icon":264},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":266,"path":267,"stem":268,"icon":269},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":271,"path":272,"stem":273,"icon":183},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":275,"path":276,"stem":277,"icon":278},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":280,"path":281,"stem":282,"icon":283},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":285,"path":286,"stem":287,"icon":288},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":290,"path":291,"stem":292,"children":293,"page":34},"Build On Top","\u002Fbuild-on-top","5.build-on-top",[294],{"title":295,"path":296,"stem":297,"icon":298},"FS reader","\u002Fbuild-on-top\u002Ffs-reader","5.build-on-top\u002F4.fs-reader","i-lucide-folder-search",{"title":300,"path":301,"stem":302,"children":303,"page":34},"Adapters","\u002Fadapters","6.adapters",[304,307,347,362],{"title":41,"path":305,"stem":306,"icon":44},"\u002Fadapters\u002Foverview","6.adapters\u002F01.overview",{"title":308,"path":309,"stem":310,"children":311,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[312,317,322,327,332,337,342],{"title":313,"path":314,"stem":315,"icon":316},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":318,"path":319,"stem":320,"icon":321},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":323,"path":324,"stem":325,"icon":326},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":328,"path":329,"stem":330,"icon":331},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":333,"path":334,"stem":335,"icon":336},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":338,"path":339,"stem":340,"icon":341},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":343,"path":344,"stem":345,"icon":346},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":348,"path":349,"stem":350,"children":351,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[352,357],{"title":353,"path":354,"stem":355,"icon":356},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":358,"path":359,"stem":360,"icon":361},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":363,"path":364,"stem":365,"children":366,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[367,372,377,381],{"title":368,"path":369,"stem":370,"icon":371},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":373,"path":374,"stem":375,"icon":376},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":378,"path":379,"stem":380,"icon":83},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom",{"title":382,"path":383,"stem":384,"icon":385},"Toolkit","\u002Fadapters\u002Fbuilding-blocks\u002Ftoolkit","6.adapters\u002F04.building-blocks\u002F04.toolkit","i-lucide-blocks",{"title":387,"path":388,"stem":389,"children":390,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[391,394,398],{"title":41,"path":392,"stem":393,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":395,"path":396,"stem":397,"icon":288},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":399,"path":400,"stem":401,"icon":83},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":403,"title":216,"body":404,"description":6027,"extension":6028,"links":6029,"meta":6033,"navigation":6034,"path":217,"seo":6035,"stem":218,"__hash__":6036},"docs\u002F4.frameworks\u002F02.nextjs.md",{"type":405,"value":406,"toc":5998},"minimark",[407,424,471,475,480,551,555,674,678,826,830,845,891,895,1018,1022,1035,1052,1121,1134,1483,1493,1497,1531,1814,1829,1832,1869,1891,1894,1923,1968,1972,1978,2791,2794,2797,3174,3177,3257,3264,3283,3458,3462,3480,3946,3955,4080,4083,4150,4154,4167,4467,4480,4483,4499,4504,4706,4710,4713,4938,4943,4946,4959,5045,5058,5062,5067,5214,5218,5225,5413,5416,5422,5663,5667,5673,5804,5807,5891,5895,5937,5945,5955,5959,5965,5994],[408,409,410,411,415,416,419,420,423],"p",{},"evlog integrates with Next.js App Router via a ",[412,413,414],"code",{},"createEvlog()"," factory that provides ",[412,417,418],{},"withEvlog()"," handler wrapper, ",[412,421,422],{},"useLogger()",", and typed exports. One file, zero global state.",[425,426,429,432,457],"prompt",{":actions":427,"description":428,"icon":219},"[\"copy\",\"cursor\",\"windsurf\"]","Set up evlog in my Next.js app",[408,430,431],{},"Set up evlog in my Next.js app with wide events and structured errors.",[433,434,435,439,442,445,448,451,454],"ul",{},[436,437,438],"li",{},"Install evlog: pnpm add evlog",[436,440,441],{},"Create lib\u002Fevlog.ts with createEvlog() to export withEvlog, useLogger, createError",[436,443,444],{},"Set service name and optional sampling\u002Fdrain config",[436,446,447],{},"Wrap API route handlers with withEvlog()",[436,449,450],{},"Use useLogger() inside handlers to build wide events with log.set()",[436,452,453],{},"Throw errors with createError({ message, status, why, fix })",[436,455,456],{},"Wide events are auto-emitted when each request completes",[408,458,459,460,466,467],{},"Docs: ",[461,462,463],"a",{"href":463,"rel":464},"https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fnextjs",[465],"nofollow","\nAdapters: ",[461,468,469],{"href":469,"rel":470},"https:\u002F\u002Fwww.evlog.dev\u002Fadapters",[465],[472,473,20],"h2",{"id":474},"quick-start",[476,477,479],"h3",{"id":478},"_1-install","1. Install",[481,482,483,508,522,536],"code-group",{},[484,485,491],"pre",{"className":486,"code":487,"filename":488,"language":489,"meta":490,"style":490},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[412,492,493],{"__ignoreMap":490},[494,495,498,501,505],"span",{"class":496,"line":497},"line",1,[494,499,488],{"class":500},"sBMFI",[494,502,504],{"class":503},"sfazB"," add",[494,506,507],{"class":503}," evlog\n",[484,509,512],{"className":486,"code":510,"filename":511,"language":489,"meta":490,"style":490},"bun add evlog\n","bun",[412,513,514],{"__ignoreMap":490},[494,515,516,518,520],{"class":496,"line":497},[494,517,511],{"class":500},[494,519,504],{"class":503},[494,521,507],{"class":503},[484,523,526],{"className":486,"code":524,"filename":525,"language":489,"meta":490,"style":490},"yarn add evlog\n","yarn",[412,527,528],{"__ignoreMap":490},[494,529,530,532,534],{"class":496,"line":497},[494,531,525],{"class":500},[494,533,504],{"class":503},[494,535,507],{"class":503},[484,537,540],{"className":486,"code":538,"filename":539,"language":489,"meta":490,"style":490},"npm install evlog\n","npm",[412,541,542],{"__ignoreMap":490},[494,543,544,546,549],{"class":496,"line":497},[494,545,539],{"class":500},[494,547,548],{"class":503}," install",[494,550,507],{"class":503},[476,552,554],{"id":553},"_2-create-your-evlog-instance","2. Create your evlog instance",[484,556,561],{"className":557,"code":558,"filename":559,"language":560,"meta":490,"style":490},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createEvlog } from 'evlog\u002Fnext'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n})\n","lib\u002Fevlog.ts","typescript",[412,562,563,592,599,645,666],{"__ignoreMap":490},[494,564,565,569,573,577,580,583,586,589],{"class":496,"line":497},[494,566,568],{"class":567},"s7zQu","import",[494,570,572],{"class":571},"sMK4o"," {",[494,574,576],{"class":575},"sTEyZ"," createEvlog",[494,578,579],{"class":571}," }",[494,581,582],{"class":567}," from",[494,584,585],{"class":571}," '",[494,587,588],{"class":503},"evlog\u002Fnext",[494,590,591],{"class":571},"'\n",[494,593,595],{"class":496,"line":594},2,[494,596,598],{"emptyLinePlaceholder":597},true,"\n",[494,600,602,605,609,611,614,617,620,622,625,627,630,633,636,639,642],{"class":496,"line":601},3,[494,603,604],{"class":567},"export",[494,606,608],{"class":607},"spNyl"," const",[494,610,572],{"class":571},[494,612,613],{"class":575}," withEvlog",[494,615,616],{"class":571},",",[494,618,619],{"class":575}," useLogger",[494,621,616],{"class":571},[494,623,624],{"class":575}," log",[494,626,616],{"class":571},[494,628,629],{"class":575}," createError ",[494,631,632],{"class":571},"}",[494,634,635],{"class":571}," =",[494,637,576],{"class":638},"s2Zo4",[494,640,641],{"class":575},"(",[494,643,644],{"class":571},"{\n",[494,646,648,652,655,657,660,663],{"class":496,"line":647},4,[494,649,651],{"class":650},"swJcz","  service",[494,653,654],{"class":571},":",[494,656,585],{"class":571},[494,658,659],{"class":503},"my-app",[494,661,662],{"class":571},"'",[494,664,665],{"class":571},",\n",[494,667,669,671],{"class":496,"line":668},5,[494,670,632],{"class":571},[494,672,673],{"class":575},")\n",[476,675,677],{"id":676},"_3-wrap-a-route-handler","3. Wrap a route handler",[484,679,682],{"className":557,"code":680,"filename":681,"language":560,"meta":490,"style":490},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const GET = withEvlog(async () => {\n  const log = useLogger()\n  log.set({ action: 'hello' })\n  return Response.json({ message: 'Hello!' })\n})\n","app\u002Fapi\u002Fhello\u002Froute.ts",[412,683,684,707,711,739,753,785,819],{"__ignoreMap":490},[494,685,686,688,690,692,694,696,698,700,702,705],{"class":496,"line":497},[494,687,568],{"class":567},[494,689,572],{"class":571},[494,691,613],{"class":575},[494,693,616],{"class":571},[494,695,619],{"class":575},[494,697,579],{"class":571},[494,699,582],{"class":567},[494,701,585],{"class":571},[494,703,704],{"class":503},"@\u002Flib\u002Fevlog",[494,706,591],{"class":571},[494,708,709],{"class":496,"line":594},[494,710,598],{"emptyLinePlaceholder":597},[494,712,713,715,717,720,723,725,727,730,733,736],{"class":496,"line":601},[494,714,604],{"class":567},[494,716,608],{"class":607},[494,718,719],{"class":575}," GET ",[494,721,722],{"class":571},"=",[494,724,613],{"class":638},[494,726,641],{"class":575},[494,728,729],{"class":607},"async",[494,731,732],{"class":571}," ()",[494,734,735],{"class":607}," =>",[494,737,738],{"class":571}," {\n",[494,740,741,744,746,748,750],{"class":496,"line":647},[494,742,743],{"class":607},"  const",[494,745,624],{"class":575},[494,747,635],{"class":571},[494,749,619],{"class":638},[494,751,752],{"class":650},"()\n",[494,754,755,758,761,764,766,769,772,774,776,779,781,783],{"class":496,"line":668},[494,756,757],{"class":575},"  log",[494,759,760],{"class":571},".",[494,762,763],{"class":638},"set",[494,765,641],{"class":650},[494,767,768],{"class":571},"{",[494,770,771],{"class":650}," action",[494,773,654],{"class":571},[494,775,585],{"class":571},[494,777,778],{"class":503},"hello",[494,780,662],{"class":571},[494,782,579],{"class":571},[494,784,673],{"class":650},[494,786,788,791,794,796,799,801,803,806,808,810,813,815,817],{"class":496,"line":787},6,[494,789,790],{"class":567},"  return",[494,792,793],{"class":575}," Response",[494,795,760],{"class":571},[494,797,798],{"class":638},"json",[494,800,641],{"class":650},[494,802,768],{"class":571},[494,804,805],{"class":650}," message",[494,807,654],{"class":571},[494,809,585],{"class":571},[494,811,812],{"class":503},"Hello!",[494,814,662],{"class":571},[494,816,579],{"class":571},[494,818,673],{"class":650},[494,820,822,824],{"class":496,"line":821},7,[494,823,632],{"class":571},[494,825,673],{"class":575},[472,827,829],{"id":828},"instrumentation","Instrumentation",[408,831,832,833,840,841,844],{},"Next.js supports an ",[461,834,837],{"href":835,"rel":836},"https:\u002F\u002Fnextjs.org\u002Fdocs\u002Fapp\u002Fguides\u002Finstrumentation",[465],[412,838,839],{},"instrumentation.ts"," file at the project root for server startup hooks and error reporting. evlog provides ",[412,842,843],{},"createInstrumentation()"," to integrate with this pattern.",[846,847,849,852],"callout",{"color":848,"icon":13},"info",[408,850,851],{},"These two APIs serve different purposes and can be used independently or together:",[433,853,854,864,879],{},[436,855,856,861,862],{},[857,858,859],"strong",{},[412,860,414],{},": per-request wide events via ",[412,863,418],{},[436,865,866,870,871,874,875,878],{},[857,867,868],{},[412,869,843],{},": server startup (",[412,872,873],{},"register()",") + unhandled error reporting (",[412,876,877],{},"onRequestError()",") across all routes, including SSR and RSC",[436,880,881,882,884,885,887,888,760],{},"Both can coexist: ",[412,883,873],{}," initializes and locks the logger first, so ",[412,886,414],{}," respects it. Each can have its own ",[412,889,890],{},"drain",[476,892,894],{"id":893},"_1-add-instrumentation-exports-to-your-evlog-instance","1. Add instrumentation exports to your evlog instance",[484,896,898],{"className":557,"code":897,"filename":559,"language":560,"meta":490,"style":490},"import { createInstrumentation } from 'evlog\u002Fnext\u002Finstrumentation'\nimport { createFsDrain } from 'evlog\u002Ffs'\n\nexport const { register, onRequestError } = createInstrumentation({\n  service: 'my-app',\n  drain: createFsDrain(),\n  captureOutput: true,\n})\n",[412,899,900,920,940,944,970,984,998,1011],{"__ignoreMap":490},[494,901,902,904,906,909,911,913,915,918],{"class":496,"line":497},[494,903,568],{"class":567},[494,905,572],{"class":571},[494,907,908],{"class":575}," createInstrumentation",[494,910,579],{"class":571},[494,912,582],{"class":567},[494,914,585],{"class":571},[494,916,917],{"class":503},"evlog\u002Fnext\u002Finstrumentation",[494,919,591],{"class":571},[494,921,922,924,926,929,931,933,935,938],{"class":496,"line":594},[494,923,568],{"class":567},[494,925,572],{"class":571},[494,927,928],{"class":575}," createFsDrain",[494,930,579],{"class":571},[494,932,582],{"class":567},[494,934,585],{"class":571},[494,936,937],{"class":503},"evlog\u002Ffs",[494,939,591],{"class":571},[494,941,942],{"class":496,"line":601},[494,943,598],{"emptyLinePlaceholder":597},[494,945,946,948,950,952,955,957,960,962,964,966,968],{"class":496,"line":647},[494,947,604],{"class":567},[494,949,608],{"class":607},[494,951,572],{"class":571},[494,953,954],{"class":575}," register",[494,956,616],{"class":571},[494,958,959],{"class":575}," onRequestError ",[494,961,632],{"class":571},[494,963,635],{"class":571},[494,965,908],{"class":638},[494,967,641],{"class":575},[494,969,644],{"class":571},[494,971,972,974,976,978,980,982],{"class":496,"line":668},[494,973,651],{"class":650},[494,975,654],{"class":571},[494,977,585],{"class":571},[494,979,659],{"class":503},[494,981,662],{"class":571},[494,983,665],{"class":571},[494,985,986,989,991,993,996],{"class":496,"line":787},[494,987,988],{"class":650},"  drain",[494,990,654],{"class":571},[494,992,928],{"class":638},[494,994,995],{"class":575},"()",[494,997,665],{"class":571},[494,999,1000,1003,1005,1009],{"class":496,"line":821},[494,1001,1002],{"class":650},"  captureOutput",[494,1004,654],{"class":571},[494,1006,1008],{"class":1007},"sfNiH"," true",[494,1010,665],{"class":571},[494,1012,1014,1016],{"class":496,"line":1013},8,[494,1015,632],{"class":571},[494,1017,673],{"class":575},[476,1019,1021],{"id":1020},"_2-wire-up-instrumentationts","2. Wire up instrumentation.ts",[408,1023,1024,1025,1027,1028,1030,1031,1034],{},"Next.js evaluates ",[412,1026,839],{}," in both Node.js and Edge runtimes. Load your real ",[412,1029,559],{}," only when ",[412,1032,1033],{},"NEXT_RUNTIME === 'nodejs'"," so Edge bundles never pull Node-only drains (fs, adapters, etc.).",[408,1036,1037,1040,1041,1044,1045,1048,1049,654],{},[857,1038,1039],{},"Recommended",": ",[412,1042,1043],{},"defineNodeInstrumentation"," gates the Node runtime, dynamic-imports your module once (cached), and forwards ",[412,1046,1047],{},"register"," \u002F ",[412,1050,1051],{},"onRequestError",[484,1053,1055],{"className":557,"code":1054,"filename":839,"language":560,"meta":490,"style":490},"import { defineNodeInstrumentation } from 'evlog\u002Fnext\u002Finstrumentation'\n\nexport const { register, onRequestError } = defineNodeInstrumentation(() => import('.\u002Flib\u002Fevlog'))\n",[412,1056,1057,1076,1080],{"__ignoreMap":490},[494,1058,1059,1061,1063,1066,1068,1070,1072,1074],{"class":496,"line":497},[494,1060,568],{"class":567},[494,1062,572],{"class":571},[494,1064,1065],{"class":575}," defineNodeInstrumentation",[494,1067,579],{"class":571},[494,1069,582],{"class":567},[494,1071,585],{"class":571},[494,1073,917],{"class":503},[494,1075,591],{"class":571},[494,1077,1078],{"class":496,"line":594},[494,1079,598],{"emptyLinePlaceholder":597},[494,1081,1082,1084,1086,1088,1090,1092,1094,1096,1098,1100,1102,1104,1106,1109,1111,1113,1116,1118],{"class":496,"line":601},[494,1083,604],{"class":567},[494,1085,608],{"class":607},[494,1087,572],{"class":571},[494,1089,954],{"class":575},[494,1091,616],{"class":571},[494,1093,959],{"class":575},[494,1095,632],{"class":571},[494,1097,635],{"class":571},[494,1099,1065],{"class":638},[494,1101,641],{"class":575},[494,1103,995],{"class":571},[494,1105,735],{"class":607},[494,1107,1108],{"class":571}," import",[494,1110,641],{"class":575},[494,1112,662],{"class":571},[494,1114,1115],{"class":503},".\u002Flib\u002Fevlog",[494,1117,662],{"class":571},[494,1119,1120],{"class":575},"))\n",[408,1122,1123,1126,1127,1129,1130,1133],{},[857,1124,1125],{},"Manual",": same behavior with explicit handlers; use this if you want full control in the root file (extra branches, per-error logic, or a different import strategy). Without a shared helper, each ",[412,1128,1051],{}," typically re-runs ",[412,1131,1132],{},"import('.\u002Flib\u002Fevlog')"," unless you add your own cache.",[484,1135,1137],{"className":557,"code":1136,"filename":839,"language":560,"meta":490,"style":490},"export async function register() {\n  if (process.env.NEXT_RUNTIME === 'nodejs') {\n    const { register } = await import('.\u002Flib\u002Fevlog')\n    await register()\n  }\n}\n\nexport async function onRequestError(\n  error: { digest?: string } & Error,\n  request: { path: string; method: string; headers: Record\u003Cstring, string> },\n  context: { routerKind: string; routePath: string; routeType: string; renderSource: string },\n) {\n  if (process.env.NEXT_RUNTIME === 'nodejs') {\n    const { onRequestError } = await import('.\u002Flib\u002Fevlog')\n    await onRequestError(error, request, context)\n  }\n}\n",[412,1138,1139,1155,1191,1219,1228,1233,1238,1242,1256,1286,1339,1385,1393,1422,1449,1473,1478],{"__ignoreMap":490},[494,1140,1141,1143,1146,1149,1151,1153],{"class":496,"line":497},[494,1142,604],{"class":567},[494,1144,1145],{"class":607}," async",[494,1147,1148],{"class":607}," function",[494,1150,954],{"class":638},[494,1152,995],{"class":571},[494,1154,738],{"class":571},[494,1156,1157,1160,1163,1166,1168,1171,1173,1176,1179,1181,1184,1186,1189],{"class":496,"line":594},[494,1158,1159],{"class":567},"  if",[494,1161,1162],{"class":650}," (",[494,1164,1165],{"class":575},"process",[494,1167,760],{"class":571},[494,1169,1170],{"class":575},"env",[494,1172,760],{"class":571},[494,1174,1175],{"class":575},"NEXT_RUNTIME",[494,1177,1178],{"class":571}," ===",[494,1180,585],{"class":571},[494,1182,1183],{"class":503},"nodejs",[494,1185,662],{"class":571},[494,1187,1188],{"class":650},") ",[494,1190,644],{"class":571},[494,1192,1193,1196,1198,1200,1202,1204,1207,1209,1211,1213,1215,1217],{"class":496,"line":601},[494,1194,1195],{"class":607},"    const",[494,1197,572],{"class":571},[494,1199,954],{"class":575},[494,1201,579],{"class":571},[494,1203,635],{"class":571},[494,1205,1206],{"class":567}," await",[494,1208,1108],{"class":571},[494,1210,641],{"class":650},[494,1212,662],{"class":571},[494,1214,1115],{"class":503},[494,1216,662],{"class":571},[494,1218,673],{"class":650},[494,1220,1221,1224,1226],{"class":496,"line":647},[494,1222,1223],{"class":567},"    await",[494,1225,954],{"class":638},[494,1227,752],{"class":650},[494,1229,1230],{"class":496,"line":668},[494,1231,1232],{"class":571},"  }\n",[494,1234,1235],{"class":496,"line":787},[494,1236,1237],{"class":571},"}\n",[494,1239,1240],{"class":496,"line":821},[494,1241,598],{"emptyLinePlaceholder":597},[494,1243,1244,1246,1248,1250,1253],{"class":496,"line":1013},[494,1245,604],{"class":567},[494,1247,1145],{"class":607},[494,1249,1148],{"class":607},[494,1251,1252],{"class":638}," onRequestError",[494,1254,1255],{"class":571},"(\n",[494,1257,1259,1263,1265,1267,1270,1273,1276,1278,1281,1284],{"class":496,"line":1258},9,[494,1260,1262],{"class":1261},"sHdIc","  error",[494,1264,654],{"class":571},[494,1266,572],{"class":571},[494,1268,1269],{"class":650}," digest",[494,1271,1272],{"class":571},"?:",[494,1274,1275],{"class":500}," string",[494,1277,579],{"class":571},[494,1279,1280],{"class":571}," &",[494,1282,1283],{"class":500}," Error",[494,1285,665],{"class":571},[494,1287,1289,1292,1294,1296,1299,1301,1303,1306,1309,1311,1313,1315,1318,1320,1323,1326,1329,1331,1333,1336],{"class":496,"line":1288},10,[494,1290,1291],{"class":1261},"  request",[494,1293,654],{"class":571},[494,1295,572],{"class":571},[494,1297,1298],{"class":650}," path",[494,1300,654],{"class":571},[494,1302,1275],{"class":500},[494,1304,1305],{"class":571},";",[494,1307,1308],{"class":650}," method",[494,1310,654],{"class":571},[494,1312,1275],{"class":500},[494,1314,1305],{"class":571},[494,1316,1317],{"class":650}," headers",[494,1319,654],{"class":571},[494,1321,1322],{"class":500}," Record",[494,1324,1325],{"class":571},"\u003C",[494,1327,1328],{"class":500},"string",[494,1330,616],{"class":571},[494,1332,1275],{"class":500},[494,1334,1335],{"class":571},">",[494,1337,1338],{"class":571}," },\n",[494,1340,1342,1345,1347,1349,1352,1354,1356,1358,1361,1363,1365,1367,1370,1372,1374,1376,1379,1381,1383],{"class":496,"line":1341},11,[494,1343,1344],{"class":1261},"  context",[494,1346,654],{"class":571},[494,1348,572],{"class":571},[494,1350,1351],{"class":650}," routerKind",[494,1353,654],{"class":571},[494,1355,1275],{"class":500},[494,1357,1305],{"class":571},[494,1359,1360],{"class":650}," routePath",[494,1362,654],{"class":571},[494,1364,1275],{"class":500},[494,1366,1305],{"class":571},[494,1368,1369],{"class":650}," routeType",[494,1371,654],{"class":571},[494,1373,1275],{"class":500},[494,1375,1305],{"class":571},[494,1377,1378],{"class":650}," renderSource",[494,1380,654],{"class":571},[494,1382,1275],{"class":500},[494,1384,1338],{"class":571},[494,1386,1388,1391],{"class":496,"line":1387},12,[494,1389,1390],{"class":571},")",[494,1392,738],{"class":571},[494,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418,1420],{"class":496,"line":1395},13,[494,1397,1159],{"class":567},[494,1399,1162],{"class":650},[494,1401,1165],{"class":575},[494,1403,760],{"class":571},[494,1405,1170],{"class":575},[494,1407,760],{"class":571},[494,1409,1175],{"class":575},[494,1411,1178],{"class":571},[494,1413,585],{"class":571},[494,1415,1183],{"class":503},[494,1417,662],{"class":571},[494,1419,1188],{"class":650},[494,1421,644],{"class":571},[494,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447],{"class":496,"line":1424},14,[494,1426,1195],{"class":607},[494,1428,572],{"class":571},[494,1430,1252],{"class":575},[494,1432,579],{"class":571},[494,1434,635],{"class":571},[494,1436,1206],{"class":567},[494,1438,1108],{"class":571},[494,1440,641],{"class":650},[494,1442,662],{"class":571},[494,1444,1115],{"class":503},[494,1446,662],{"class":571},[494,1448,673],{"class":650},[494,1450,1452,1454,1456,1458,1461,1463,1466,1468,1471],{"class":496,"line":1451},15,[494,1453,1223],{"class":567},[494,1455,1252],{"class":638},[494,1457,641],{"class":650},[494,1459,1460],{"class":575},"error",[494,1462,616],{"class":571},[494,1464,1465],{"class":575}," request",[494,1467,616],{"class":571},[494,1469,1470],{"class":575}," context",[494,1472,673],{"class":650},[494,1474,1476],{"class":496,"line":1475},16,[494,1477,1232],{"class":571},[494,1479,1481],{"class":496,"line":1480},17,[494,1482,1237],{"class":571},[408,1484,1485,1486,1488,1489,1492],{},"Both styles are supported: the helper is optional sugar, not a takeover. ",[412,1487,1043],{}," only forwards Next’s two hooks to whatever you export from ",[412,1490,1491],{},"lib\u002Fevlog",". It does not prevent other work in your app.",[476,1494,1496],{"id":1495},"custom-behavior-evlog-your-code","Custom behavior (evlog + your code)",[433,1498,1499,1523],{},[436,1500,1501,1506,1507,1509,1510,1512,1513,1516,1517,1520,1521,760],{},[857,1502,1503,1504],{},"Root ",[412,1505,839],{},": Next’s stable surface here is ",[412,1508,1047],{}," and ",[412,1511,1051],{},". The evlog helper exports exactly those; it does not reserve the whole file. If you need ",[857,1514,1515],{},"additional"," top-level exports later (when Next documents them), use the ",[857,1518,1519],{},"manual"," wiring and compose by hand, or keep evlog’s hooks minimal and put everything else in ",[412,1522,559],{},[436,1524,1525,1530],{},[857,1526,1527,1529],{},[412,1528,559],{}," (recommended for composition)",": wrap evlog’s handlers so you stay free to add startup work, metrics, or extra logging without fighting the helper:",[484,1532,1534],{"className":557,"code":1533,"filename":559,"language":560,"meta":490,"style":490},"import { createInstrumentation } from 'evlog\u002Fnext\u002Finstrumentation'\n\nconst { register: evlogRegister, onRequestError: evlogOnRequestError } = createInstrumentation({\n  service: 'my-app',\n  drain: myDrain,\n})\n\nexport async function register() {\n  await evlogRegister()\n  \u002F\u002F e.g. OpenTelemetry, feature flags, custom one-off init\n}\n\nexport function onRequestError(\n  error: { digest?: string } & Error,\n  request: { path: string; method: string; headers: Record\u003Cstring, string> },\n  context: { routerKind: string; routePath: string; routeType: string; renderSource: string },\n) {\n  evlogOnRequestError(error, request, context)\n  \u002F\u002F optional: your own side effects (metrics, etc.)\n}\n",[412,1535,1536,1554,1558,1591,1605,1616,1622,1626,1640,1649,1655,1659,1663,1673,1695,1737,1777,1783,1803,1809],{"__ignoreMap":490},[494,1537,1538,1540,1542,1544,1546,1548,1550,1552],{"class":496,"line":497},[494,1539,568],{"class":567},[494,1541,572],{"class":571},[494,1543,908],{"class":575},[494,1545,579],{"class":571},[494,1547,582],{"class":567},[494,1549,585],{"class":571},[494,1551,917],{"class":503},[494,1553,591],{"class":571},[494,1555,1556],{"class":496,"line":594},[494,1557,598],{"emptyLinePlaceholder":597},[494,1559,1560,1563,1565,1567,1569,1572,1574,1576,1578,1581,1583,1585,1587,1589],{"class":496,"line":601},[494,1561,1562],{"class":607},"const",[494,1564,572],{"class":571},[494,1566,954],{"class":650},[494,1568,654],{"class":571},[494,1570,1571],{"class":575}," evlogRegister",[494,1573,616],{"class":571},[494,1575,1252],{"class":650},[494,1577,654],{"class":571},[494,1579,1580],{"class":575}," evlogOnRequestError ",[494,1582,632],{"class":571},[494,1584,635],{"class":571},[494,1586,908],{"class":638},[494,1588,641],{"class":575},[494,1590,644],{"class":571},[494,1592,1593,1595,1597,1599,1601,1603],{"class":496,"line":647},[494,1594,651],{"class":650},[494,1596,654],{"class":571},[494,1598,585],{"class":571},[494,1600,659],{"class":503},[494,1602,662],{"class":571},[494,1604,665],{"class":571},[494,1606,1607,1609,1611,1614],{"class":496,"line":668},[494,1608,988],{"class":650},[494,1610,654],{"class":571},[494,1612,1613],{"class":575}," myDrain",[494,1615,665],{"class":571},[494,1617,1618,1620],{"class":496,"line":787},[494,1619,632],{"class":571},[494,1621,673],{"class":575},[494,1623,1624],{"class":496,"line":821},[494,1625,598],{"emptyLinePlaceholder":597},[494,1627,1628,1630,1632,1634,1636,1638],{"class":496,"line":1013},[494,1629,604],{"class":567},[494,1631,1145],{"class":607},[494,1633,1148],{"class":607},[494,1635,954],{"class":638},[494,1637,995],{"class":571},[494,1639,738],{"class":571},[494,1641,1642,1645,1647],{"class":496,"line":1258},[494,1643,1644],{"class":567},"  await",[494,1646,1571],{"class":638},[494,1648,752],{"class":650},[494,1650,1651],{"class":496,"line":1288},[494,1652,1654],{"class":1653},"sHwdD","  \u002F\u002F e.g. OpenTelemetry, feature flags, custom one-off init\n",[494,1656,1657],{"class":496,"line":1341},[494,1658,1237],{"class":571},[494,1660,1661],{"class":496,"line":1387},[494,1662,598],{"emptyLinePlaceholder":597},[494,1664,1665,1667,1669,1671],{"class":496,"line":1395},[494,1666,604],{"class":567},[494,1668,1148],{"class":607},[494,1670,1252],{"class":638},[494,1672,1255],{"class":571},[494,1674,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693],{"class":496,"line":1424},[494,1676,1262],{"class":1261},[494,1678,654],{"class":571},[494,1680,572],{"class":571},[494,1682,1269],{"class":650},[494,1684,1272],{"class":571},[494,1686,1275],{"class":500},[494,1688,579],{"class":571},[494,1690,1280],{"class":571},[494,1692,1283],{"class":500},[494,1694,665],{"class":571},[494,1696,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735],{"class":496,"line":1451},[494,1698,1291],{"class":1261},[494,1700,654],{"class":571},[494,1702,572],{"class":571},[494,1704,1298],{"class":650},[494,1706,654],{"class":571},[494,1708,1275],{"class":500},[494,1710,1305],{"class":571},[494,1712,1308],{"class":650},[494,1714,654],{"class":571},[494,1716,1275],{"class":500},[494,1718,1305],{"class":571},[494,1720,1317],{"class":650},[494,1722,654],{"class":571},[494,1724,1322],{"class":500},[494,1726,1325],{"class":571},[494,1728,1328],{"class":500},[494,1730,616],{"class":571},[494,1732,1275],{"class":500},[494,1734,1335],{"class":571},[494,1736,1338],{"class":571},[494,1738,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775],{"class":496,"line":1475},[494,1740,1344],{"class":1261},[494,1742,654],{"class":571},[494,1744,572],{"class":571},[494,1746,1351],{"class":650},[494,1748,654],{"class":571},[494,1750,1275],{"class":500},[494,1752,1305],{"class":571},[494,1754,1360],{"class":650},[494,1756,654],{"class":571},[494,1758,1275],{"class":500},[494,1760,1305],{"class":571},[494,1762,1369],{"class":650},[494,1764,654],{"class":571},[494,1766,1275],{"class":500},[494,1768,1305],{"class":571},[494,1770,1378],{"class":650},[494,1772,654],{"class":571},[494,1774,1275],{"class":500},[494,1776,1338],{"class":571},[494,1778,1779,1781],{"class":496,"line":1480},[494,1780,1390],{"class":571},[494,1782,738],{"class":571},[494,1784,1786,1789,1791,1793,1795,1797,1799,1801],{"class":496,"line":1785},18,[494,1787,1788],{"class":638},"  evlogOnRequestError",[494,1790,641],{"class":650},[494,1792,1460],{"class":575},[494,1794,616],{"class":571},[494,1796,1465],{"class":575},[494,1798,616],{"class":571},[494,1800,1470],{"class":575},[494,1802,673],{"class":650},[494,1804,1806],{"class":496,"line":1805},19,[494,1807,1808],{"class":1653},"  \u002F\u002F optional: your own side effects (metrics, etc.)\n",[494,1810,1812],{"class":496,"line":1811},20,[494,1813,1237],{"class":571},[408,1815,1816,1817,1819,1820,1822,1823,1825,1826,1828],{},"Then keep ",[412,1818,839],{}," as a thin import (",[412,1821,1043],{}," or manual) that only loads ",[412,1824,1115],{}," on Node. Your customization lives next to ",[412,1827,414],{}," in one place.",[408,1830,1831],{},"Next.js automatically calls these exports:",[433,1833,1834,1850],{},[436,1835,1836,1838,1839,1842,1843,1509,1846,1849],{},[412,1837,873],{},": Runs once when the server starts. Initializes the evlog logger with your configured drain, sampling, and options. When ",[412,1840,1841],{},"captureOutput"," is enabled, ",[412,1844,1845],{},"stdout",[412,1847,1848],{},"stderr"," writes are captured as structured log events.",[436,1851,1852,1854,1855,1858,1859,1858,1862,1858,1865,1868],{},[412,1853,877],{},": Called on every unhandled request error. Emits a structured error log with the error message, digest, stack trace, request path\u002Fmethod, and routing context (",[412,1856,1857],{},"routerKind",", ",[412,1860,1861],{},"routePath",[412,1863,1864],{},"routeType",[412,1866,1867],{},"renderSource",").",[846,1870,1871,1873,1874,1876,1877,1509,1880,1883,1884,1048,1887,1890],{"color":848,"icon":13},[412,1872,1841],{}," only activates in the Node.js runtime (",[412,1875,1033],{},"). It patches ",[412,1878,1879],{},"process.stdout.write",[412,1881,1882],{},"process.stderr.write"," to emit structured ",[412,1885,1886],{},"log.info",[412,1888,1889],{},"log.error"," events alongside the original output.",[476,1892,170],{"id":1893},"configuration",[408,1895,1896,1897,1899,1900,1858,1903,1858,1906,1858,1908,1858,1911,1858,1914,1858,1917,1858,1920,1922],{},"The ",[412,1898,843],{}," factory accepts global logger options (",[412,1901,1902],{},"enabled",[412,1904,1905],{},"service",[412,1907,1170],{},[412,1909,1910],{},"pretty",[412,1912,1913],{},"silent",[412,1915,1916],{},"sampling",[412,1918,1919],{},"stringify",[412,1921,890],{},") plus:",[1924,1925,1926,1945],"table",{},[1927,1928,1929],"thead",{},[1930,1931,1932,1936,1939,1942],"tr",{},[1933,1934,1935],"th",{},"Option",[1933,1937,1938],{},"Type",[1933,1940,1941],{},"Default",[1933,1943,1944],{},"Description",[1946,1947,1948],"tbody",{},[1930,1949,1950,1955,1960,1965],{},[1951,1952,1953],"td",{},[412,1954,1841],{},[1951,1956,1957],{},[412,1958,1959],{},"boolean",[1951,1961,1962],{},[412,1963,1964],{},"false",[1951,1966,1967],{},"Capture stdout\u002Fstderr as structured log events",[472,1969,1971],{"id":1970},"production-configuration","Production Configuration",[408,1973,1974,1975,1977],{},"A real-world ",[412,1976,559],{}," with enrichers, batched drain, tail sampling, and route-based service names:",[484,1979,1981],{"className":557,"code":1980,"filename":559,"language":560,"meta":490,"style":490},"import type { DrainContext } from 'evlog'\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createUserAgentEnricher, createRequestSizeEnricher } from 'evlog\u002Fenrichers'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\n\u002F\u002F 1. Enrichers - add derived context to every event\nconst enrichers = [createUserAgentEnricher(), createRequestSizeEnricher()]\n\n\u002F\u002F 2. Pipeline - batch events before sending\nconst pipeline = createDrainPipeline\u003CDrainContext>({ batch: { size: 50, intervalMs: 5000 } })\n\n\u002F\u002F 3. Drain - send batched events to Axiom\nconst drain = pipeline(createAxiomDrain({\n  dataset: 'logs',\n  token: process.env.AXIOM_TOKEN!,\n}))\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n\n  \u002F\u002F 4. Head sampling - keep 10% of info logs\n  sampling: {\n    rates: { info: 10 },\n    keep: [\n      { status: 400 },              \u002F\u002F Always keep errors\n      { duration: 1000 },           \u002F\u002F Always keep slow requests\n      { path: '\u002Fapi\u002Fcritical\u002F**' }, \u002F\u002F Always keep critical paths\n    ],\n  },\n\n  \u002F\u002F 5. Route-based service names\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  \u002F\u002F 6. Custom tail sampling - business logic\n  keep: (ctx) => {\n    const user = ctx.context.user as { premium?: boolean } | undefined\n    if (user?.premium) ctx.shouldKeep = true\n  },\n\n  \u002F\u002F 7. Enrich every event with user agent, request size, and deployment info\n  enrich: (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n    ctx.event.deploymentId = process.env.VERCEL_DEPLOYMENT_ID\n    ctx.event.region = process.env.VERCEL_REGION\n  },\n\n  drain,\n})\n",[412,1982,1983,2006,2024,2049,2069,2089,2093,2098,2122,2126,2131,2185,2189,2194,2215,2231,2253,2259,2263,2295,2309,2314,2320,2330,2350,2361,2381,2399,2420,2428,2434,2439,2445,2455,2484,2511,2538,2543,2548,2554,2573,2617,2647,2652,2657,2663,2681,2711,2740,2767,2772,2777,2784],{"__ignoreMap":490},[494,1984,1985,1987,1990,1992,1995,1997,1999,2001,2004],{"class":496,"line":497},[494,1986,568],{"class":567},[494,1988,1989],{"class":567}," type",[494,1991,572],{"class":571},[494,1993,1994],{"class":575}," DrainContext",[494,1996,579],{"class":571},[494,1998,582],{"class":567},[494,2000,585],{"class":571},[494,2002,2003],{"class":503},"evlog",[494,2005,591],{"class":571},[494,2007,2008,2010,2012,2014,2016,2018,2020,2022],{"class":496,"line":594},[494,2009,568],{"class":567},[494,2011,572],{"class":571},[494,2013,576],{"class":575},[494,2015,579],{"class":571},[494,2017,582],{"class":567},[494,2019,585],{"class":571},[494,2021,588],{"class":503},[494,2023,591],{"class":571},[494,2025,2026,2028,2030,2033,2035,2038,2040,2042,2044,2047],{"class":496,"line":601},[494,2027,568],{"class":567},[494,2029,572],{"class":571},[494,2031,2032],{"class":575}," createUserAgentEnricher",[494,2034,616],{"class":571},[494,2036,2037],{"class":575}," createRequestSizeEnricher",[494,2039,579],{"class":571},[494,2041,582],{"class":567},[494,2043,585],{"class":571},[494,2045,2046],{"class":503},"evlog\u002Fenrichers",[494,2048,591],{"class":571},[494,2050,2051,2053,2055,2058,2060,2062,2064,2067],{"class":496,"line":647},[494,2052,568],{"class":567},[494,2054,572],{"class":571},[494,2056,2057],{"class":575}," createAxiomDrain",[494,2059,579],{"class":571},[494,2061,582],{"class":567},[494,2063,585],{"class":571},[494,2065,2066],{"class":503},"evlog\u002Faxiom",[494,2068,591],{"class":571},[494,2070,2071,2073,2075,2078,2080,2082,2084,2087],{"class":496,"line":668},[494,2072,568],{"class":567},[494,2074,572],{"class":571},[494,2076,2077],{"class":575}," createDrainPipeline",[494,2079,579],{"class":571},[494,2081,582],{"class":567},[494,2083,585],{"class":571},[494,2085,2086],{"class":503},"evlog\u002Fpipeline",[494,2088,591],{"class":571},[494,2090,2091],{"class":496,"line":787},[494,2092,598],{"emptyLinePlaceholder":597},[494,2094,2095],{"class":496,"line":821},[494,2096,2097],{"class":1653},"\u002F\u002F 1. Enrichers - add derived context to every event\n",[494,2099,2100,2102,2105,2107,2110,2113,2115,2117,2119],{"class":496,"line":1013},[494,2101,1562],{"class":607},[494,2103,2104],{"class":575}," enrichers ",[494,2106,722],{"class":571},[494,2108,2109],{"class":575}," [",[494,2111,2112],{"class":638},"createUserAgentEnricher",[494,2114,995],{"class":575},[494,2116,616],{"class":571},[494,2118,2037],{"class":638},[494,2120,2121],{"class":575},"()]\n",[494,2123,2124],{"class":496,"line":1258},[494,2125,598],{"emptyLinePlaceholder":597},[494,2127,2128],{"class":496,"line":1288},[494,2129,2130],{"class":1653},"\u002F\u002F 2. Pipeline - batch events before sending\n",[494,2132,2133,2135,2138,2140,2142,2144,2147,2149,2151,2153,2156,2158,2160,2163,2165,2169,2171,2174,2176,2179,2181,2183],{"class":496,"line":1341},[494,2134,1562],{"class":607},[494,2136,2137],{"class":575}," pipeline ",[494,2139,722],{"class":571},[494,2141,2077],{"class":638},[494,2143,1325],{"class":571},[494,2145,2146],{"class":500},"DrainContext",[494,2148,1335],{"class":571},[494,2150,641],{"class":575},[494,2152,768],{"class":571},[494,2154,2155],{"class":650}," batch",[494,2157,654],{"class":571},[494,2159,572],{"class":571},[494,2161,2162],{"class":650}," size",[494,2164,654],{"class":571},[494,2166,2168],{"class":2167},"sbssI"," 50",[494,2170,616],{"class":571},[494,2172,2173],{"class":650}," intervalMs",[494,2175,654],{"class":571},[494,2177,2178],{"class":2167}," 5000",[494,2180,579],{"class":571},[494,2182,579],{"class":571},[494,2184,673],{"class":575},[494,2186,2187],{"class":496,"line":1387},[494,2188,598],{"emptyLinePlaceholder":597},[494,2190,2191],{"class":496,"line":1395},[494,2192,2193],{"class":1653},"\u002F\u002F 3. Drain - send batched events to Axiom\n",[494,2195,2196,2198,2201,2203,2206,2208,2211,2213],{"class":496,"line":1424},[494,2197,1562],{"class":607},[494,2199,2200],{"class":575}," drain ",[494,2202,722],{"class":571},[494,2204,2205],{"class":638}," pipeline",[494,2207,641],{"class":575},[494,2209,2210],{"class":638},"createAxiomDrain",[494,2212,641],{"class":575},[494,2214,644],{"class":571},[494,2216,2217,2220,2222,2224,2227,2229],{"class":496,"line":1451},[494,2218,2219],{"class":650},"  dataset",[494,2221,654],{"class":571},[494,2223,585],{"class":571},[494,2225,2226],{"class":503},"logs",[494,2228,662],{"class":571},[494,2230,665],{"class":571},[494,2232,2233,2236,2238,2241,2243,2245,2247,2250],{"class":496,"line":1475},[494,2234,2235],{"class":650},"  token",[494,2237,654],{"class":571},[494,2239,2240],{"class":575}," process",[494,2242,760],{"class":571},[494,2244,1170],{"class":575},[494,2246,760],{"class":571},[494,2248,2249],{"class":575},"AXIOM_TOKEN",[494,2251,2252],{"class":571},"!,\n",[494,2254,2255,2257],{"class":496,"line":1480},[494,2256,632],{"class":571},[494,2258,1120],{"class":575},[494,2260,2261],{"class":496,"line":1785},[494,2262,598],{"emptyLinePlaceholder":597},[494,2264,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293],{"class":496,"line":1805},[494,2266,604],{"class":567},[494,2268,608],{"class":607},[494,2270,572],{"class":571},[494,2272,613],{"class":575},[494,2274,616],{"class":571},[494,2276,619],{"class":575},[494,2278,616],{"class":571},[494,2280,624],{"class":575},[494,2282,616],{"class":571},[494,2284,629],{"class":575},[494,2286,632],{"class":571},[494,2288,635],{"class":571},[494,2290,576],{"class":638},[494,2292,641],{"class":575},[494,2294,644],{"class":571},[494,2296,2297,2299,2301,2303,2305,2307],{"class":496,"line":1811},[494,2298,651],{"class":650},[494,2300,654],{"class":571},[494,2302,585],{"class":571},[494,2304,659],{"class":503},[494,2306,662],{"class":571},[494,2308,665],{"class":571},[494,2310,2312],{"class":496,"line":2311},21,[494,2313,598],{"emptyLinePlaceholder":597},[494,2315,2317],{"class":496,"line":2316},22,[494,2318,2319],{"class":1653},"  \u002F\u002F 4. Head sampling - keep 10% of info logs\n",[494,2321,2323,2326,2328],{"class":496,"line":2322},23,[494,2324,2325],{"class":650},"  sampling",[494,2327,654],{"class":571},[494,2329,738],{"class":571},[494,2331,2333,2336,2338,2340,2343,2345,2348],{"class":496,"line":2332},24,[494,2334,2335],{"class":650},"    rates",[494,2337,654],{"class":571},[494,2339,572],{"class":571},[494,2341,2342],{"class":650}," info",[494,2344,654],{"class":571},[494,2346,2347],{"class":2167}," 10",[494,2349,1338],{"class":571},[494,2351,2353,2356,2358],{"class":496,"line":2352},25,[494,2354,2355],{"class":650},"    keep",[494,2357,654],{"class":571},[494,2359,2360],{"class":575}," [\n",[494,2362,2364,2367,2370,2372,2375,2378],{"class":496,"line":2363},26,[494,2365,2366],{"class":571},"      {",[494,2368,2369],{"class":650}," status",[494,2371,654],{"class":571},[494,2373,2374],{"class":2167}," 400",[494,2376,2377],{"class":571}," },",[494,2379,2380],{"class":1653},"              \u002F\u002F Always keep errors\n",[494,2382,2384,2386,2389,2391,2394,2396],{"class":496,"line":2383},27,[494,2385,2366],{"class":571},[494,2387,2388],{"class":650}," duration",[494,2390,654],{"class":571},[494,2392,2393],{"class":2167}," 1000",[494,2395,2377],{"class":571},[494,2397,2398],{"class":1653},"           \u002F\u002F Always keep slow requests\n",[494,2400,2402,2404,2406,2408,2410,2413,2415,2417],{"class":496,"line":2401},28,[494,2403,2366],{"class":571},[494,2405,1298],{"class":650},[494,2407,654],{"class":571},[494,2409,585],{"class":571},[494,2411,2412],{"class":503},"\u002Fapi\u002Fcritical\u002F**",[494,2414,662],{"class":571},[494,2416,2377],{"class":571},[494,2418,2419],{"class":1653}," \u002F\u002F Always keep critical paths\n",[494,2421,2423,2426],{"class":496,"line":2422},29,[494,2424,2425],{"class":575},"    ]",[494,2427,665],{"class":571},[494,2429,2431],{"class":496,"line":2430},30,[494,2432,2433],{"class":571},"  },\n",[494,2435,2437],{"class":496,"line":2436},31,[494,2438,598],{"emptyLinePlaceholder":597},[494,2440,2442],{"class":496,"line":2441},32,[494,2443,2444],{"class":1653},"  \u002F\u002F 5. Route-based service names\n",[494,2446,2448,2451,2453],{"class":496,"line":2447},33,[494,2449,2450],{"class":650},"  routes",[494,2452,654],{"class":571},[494,2454,738],{"class":571},[494,2456,2458,2461,2464,2466,2468,2470,2473,2475,2477,2480,2482],{"class":496,"line":2457},34,[494,2459,2460],{"class":571},"    '",[494,2462,2463],{"class":650},"\u002Fapi\u002Fauth\u002F**",[494,2465,662],{"class":571},[494,2467,654],{"class":571},[494,2469,572],{"class":571},[494,2471,2472],{"class":650}," service",[494,2474,654],{"class":571},[494,2476,585],{"class":571},[494,2478,2479],{"class":503},"auth-service",[494,2481,662],{"class":571},[494,2483,1338],{"class":571},[494,2485,2487,2489,2492,2494,2496,2498,2500,2502,2504,2507,2509],{"class":496,"line":2486},35,[494,2488,2460],{"class":571},[494,2490,2491],{"class":650},"\u002Fapi\u002Fpayment\u002F**",[494,2493,662],{"class":571},[494,2495,654],{"class":571},[494,2497,572],{"class":571},[494,2499,2472],{"class":650},[494,2501,654],{"class":571},[494,2503,585],{"class":571},[494,2505,2506],{"class":503},"payment-service",[494,2508,662],{"class":571},[494,2510,1338],{"class":571},[494,2512,2514,2516,2519,2521,2523,2525,2527,2529,2531,2534,2536],{"class":496,"line":2513},36,[494,2515,2460],{"class":571},[494,2517,2518],{"class":650},"\u002Fapi\u002Fbooking\u002F**",[494,2520,662],{"class":571},[494,2522,654],{"class":571},[494,2524,572],{"class":571},[494,2526,2472],{"class":650},[494,2528,654],{"class":571},[494,2530,585],{"class":571},[494,2532,2533],{"class":503},"booking-service",[494,2535,662],{"class":571},[494,2537,1338],{"class":571},[494,2539,2541],{"class":496,"line":2540},37,[494,2542,2433],{"class":571},[494,2544,2546],{"class":496,"line":2545},38,[494,2547,598],{"emptyLinePlaceholder":597},[494,2549,2551],{"class":496,"line":2550},39,[494,2552,2553],{"class":1653},"  \u002F\u002F 6. Custom tail sampling - business logic\n",[494,2555,2557,2560,2562,2564,2567,2569,2571],{"class":496,"line":2556},40,[494,2558,2559],{"class":638},"  keep",[494,2561,654],{"class":571},[494,2563,1162],{"class":571},[494,2565,2566],{"class":1261},"ctx",[494,2568,1390],{"class":571},[494,2570,735],{"class":607},[494,2572,738],{"class":571},[494,2574,2576,2578,2581,2583,2586,2588,2591,2593,2596,2599,2601,2604,2606,2609,2611,2614],{"class":496,"line":2575},41,[494,2577,1195],{"class":607},[494,2579,2580],{"class":575}," user",[494,2582,635],{"class":571},[494,2584,2585],{"class":575}," ctx",[494,2587,760],{"class":571},[494,2589,2590],{"class":575},"context",[494,2592,760],{"class":571},[494,2594,2595],{"class":575},"user",[494,2597,2598],{"class":567}," as",[494,2600,572],{"class":571},[494,2602,2603],{"class":650}," premium",[494,2605,1272],{"class":571},[494,2607,2608],{"class":500}," boolean",[494,2610,579],{"class":571},[494,2612,2613],{"class":571}," |",[494,2615,2616],{"class":500}," undefined\n",[494,2618,2620,2623,2625,2627,2630,2633,2635,2637,2639,2642,2644],{"class":496,"line":2619},42,[494,2621,2622],{"class":567},"    if",[494,2624,1162],{"class":650},[494,2626,2595],{"class":575},[494,2628,2629],{"class":571},"?.",[494,2631,2632],{"class":575},"premium",[494,2634,1188],{"class":650},[494,2636,2566],{"class":575},[494,2638,760],{"class":571},[494,2640,2641],{"class":575},"shouldKeep",[494,2643,635],{"class":571},[494,2645,2646],{"class":1007}," true\n",[494,2648,2650],{"class":496,"line":2649},43,[494,2651,2433],{"class":571},[494,2653,2655],{"class":496,"line":2654},44,[494,2656,598],{"emptyLinePlaceholder":597},[494,2658,2660],{"class":496,"line":2659},45,[494,2661,2662],{"class":1653},"  \u002F\u002F 7. Enrich every event with user agent, request size, and deployment info\n",[494,2664,2666,2669,2671,2673,2675,2677,2679],{"class":496,"line":2665},46,[494,2667,2668],{"class":638},"  enrich",[494,2670,654],{"class":571},[494,2672,1162],{"class":571},[494,2674,2566],{"class":1261},[494,2676,1390],{"class":571},[494,2678,735],{"class":607},[494,2680,738],{"class":571},[494,2682,2684,2687,2689,2691,2694,2697,2700,2702,2705,2707,2709],{"class":496,"line":2683},47,[494,2685,2686],{"class":567},"    for",[494,2688,1162],{"class":650},[494,2690,1562],{"class":607},[494,2692,2693],{"class":575}," enricher",[494,2695,2696],{"class":571}," of",[494,2698,2699],{"class":575}," enrichers",[494,2701,1188],{"class":650},[494,2703,2704],{"class":638},"enricher",[494,2706,641],{"class":650},[494,2708,2566],{"class":575},[494,2710,673],{"class":650},[494,2712,2714,2717,2719,2722,2724,2727,2729,2731,2733,2735,2737],{"class":496,"line":2713},48,[494,2715,2716],{"class":575},"    ctx",[494,2718,760],{"class":571},[494,2720,2721],{"class":575},"event",[494,2723,760],{"class":571},[494,2725,2726],{"class":575},"deploymentId",[494,2728,635],{"class":571},[494,2730,2240],{"class":575},[494,2732,760],{"class":571},[494,2734,1170],{"class":575},[494,2736,760],{"class":571},[494,2738,2739],{"class":575},"VERCEL_DEPLOYMENT_ID\n",[494,2741,2743,2745,2747,2749,2751,2754,2756,2758,2760,2762,2764],{"class":496,"line":2742},49,[494,2744,2716],{"class":575},[494,2746,760],{"class":571},[494,2748,2721],{"class":575},[494,2750,760],{"class":571},[494,2752,2753],{"class":575},"region",[494,2755,635],{"class":571},[494,2757,2240],{"class":575},[494,2759,760],{"class":571},[494,2761,1170],{"class":575},[494,2763,760],{"class":571},[494,2765,2766],{"class":575},"VERCEL_REGION\n",[494,2768,2770],{"class":496,"line":2769},50,[494,2771,2433],{"class":571},[494,2773,2775],{"class":496,"line":2774},51,[494,2776,598],{"emptyLinePlaceholder":597},[494,2778,2780,2782],{"class":496,"line":2779},52,[494,2781,988],{"class":575},[494,2783,665],{"class":571},[494,2785,2787,2789],{"class":496,"line":2786},53,[494,2788,632],{"class":571},[494,2790,673],{"class":575},[472,2792,51],{"id":2793},"wide-events",[408,2795,2796],{},"Build up context progressively through your handler. One request = one wide event:",[484,2798,2801],{"className":557,"code":2799,"filename":2800,"language":560,"meta":490,"style":490},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async (request: Request) => {\n  const log = useLogger()\n  const body = await request.json()\n\n  \u002F\u002F Stage 1: User context\n  log.set({\n    user: { id: body.userId, plan: 'enterprise' },\n  })\n\n  \u002F\u002F Stage 2: Cart context\n  log.set({\n    cart: { items: body.items.length, total: body.total, currency: 'USD' },\n  })\n\n  \u002F\u002F Stage 3: Payment context\n  const payment = await processPayment(body)\n  log.set({\n    payment: { method: payment.method, cardLast4: payment.last4 },\n  })\n\n  return Response.json({ success: true, orderId: payment.orderId })\n})\n","app\u002Fapi\u002Fcheckout\u002Froute.ts",[412,2802,2803,2825,2829,2862,2874,2893,2897,2902,2914,2951,2958,2962,2967,2979,3035,3041,3045,3050,3071,3083,3119,3125,3129,3168],{"__ignoreMap":490},[494,2804,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823],{"class":496,"line":497},[494,2806,568],{"class":567},[494,2808,572],{"class":571},[494,2810,613],{"class":575},[494,2812,616],{"class":571},[494,2814,619],{"class":575},[494,2816,579],{"class":571},[494,2818,582],{"class":567},[494,2820,585],{"class":571},[494,2822,704],{"class":503},[494,2824,591],{"class":571},[494,2826,2827],{"class":496,"line":594},[494,2828,598],{"emptyLinePlaceholder":597},[494,2830,2831,2833,2835,2838,2840,2842,2844,2846,2848,2851,2853,2856,2858,2860],{"class":496,"line":601},[494,2832,604],{"class":567},[494,2834,608],{"class":607},[494,2836,2837],{"class":575}," POST ",[494,2839,722],{"class":571},[494,2841,613],{"class":638},[494,2843,641],{"class":575},[494,2845,729],{"class":607},[494,2847,1162],{"class":571},[494,2849,2850],{"class":1261},"request",[494,2852,654],{"class":571},[494,2854,2855],{"class":500}," Request",[494,2857,1390],{"class":571},[494,2859,735],{"class":607},[494,2861,738],{"class":571},[494,2863,2864,2866,2868,2870,2872],{"class":496,"line":647},[494,2865,743],{"class":607},[494,2867,624],{"class":575},[494,2869,635],{"class":571},[494,2871,619],{"class":638},[494,2873,752],{"class":650},[494,2875,2876,2878,2881,2883,2885,2887,2889,2891],{"class":496,"line":668},[494,2877,743],{"class":607},[494,2879,2880],{"class":575}," body",[494,2882,635],{"class":571},[494,2884,1206],{"class":567},[494,2886,1465],{"class":575},[494,2888,760],{"class":571},[494,2890,798],{"class":638},[494,2892,752],{"class":650},[494,2894,2895],{"class":496,"line":787},[494,2896,598],{"emptyLinePlaceholder":597},[494,2898,2899],{"class":496,"line":821},[494,2900,2901],{"class":1653},"  \u002F\u002F Stage 1: User context\n",[494,2903,2904,2906,2908,2910,2912],{"class":496,"line":1013},[494,2905,757],{"class":575},[494,2907,760],{"class":571},[494,2909,763],{"class":638},[494,2911,641],{"class":650},[494,2913,644],{"class":571},[494,2915,2916,2919,2921,2923,2926,2928,2930,2932,2935,2937,2940,2942,2944,2947,2949],{"class":496,"line":1258},[494,2917,2918],{"class":650},"    user",[494,2920,654],{"class":571},[494,2922,572],{"class":571},[494,2924,2925],{"class":650}," id",[494,2927,654],{"class":571},[494,2929,2880],{"class":575},[494,2931,760],{"class":571},[494,2933,2934],{"class":575},"userId",[494,2936,616],{"class":571},[494,2938,2939],{"class":650}," plan",[494,2941,654],{"class":571},[494,2943,585],{"class":571},[494,2945,2946],{"class":503},"enterprise",[494,2948,662],{"class":571},[494,2950,1338],{"class":571},[494,2952,2953,2956],{"class":496,"line":1288},[494,2954,2955],{"class":571},"  }",[494,2957,673],{"class":650},[494,2959,2960],{"class":496,"line":1341},[494,2961,598],{"emptyLinePlaceholder":597},[494,2963,2964],{"class":496,"line":1387},[494,2965,2966],{"class":1653},"  \u002F\u002F Stage 2: Cart context\n",[494,2968,2969,2971,2973,2975,2977],{"class":496,"line":1395},[494,2970,757],{"class":575},[494,2972,760],{"class":571},[494,2974,763],{"class":638},[494,2976,641],{"class":650},[494,2978,644],{"class":571},[494,2980,2981,2984,2986,2988,2991,2993,2995,2997,3000,3002,3005,3007,3010,3012,3014,3016,3019,3021,3024,3026,3028,3031,3033],{"class":496,"line":1424},[494,2982,2983],{"class":650},"    cart",[494,2985,654],{"class":571},[494,2987,572],{"class":571},[494,2989,2990],{"class":650}," items",[494,2992,654],{"class":571},[494,2994,2880],{"class":575},[494,2996,760],{"class":571},[494,2998,2999],{"class":575},"items",[494,3001,760],{"class":571},[494,3003,3004],{"class":575},"length",[494,3006,616],{"class":571},[494,3008,3009],{"class":650}," total",[494,3011,654],{"class":571},[494,3013,2880],{"class":575},[494,3015,760],{"class":571},[494,3017,3018],{"class":575},"total",[494,3020,616],{"class":571},[494,3022,3023],{"class":650}," currency",[494,3025,654],{"class":571},[494,3027,585],{"class":571},[494,3029,3030],{"class":503},"USD",[494,3032,662],{"class":571},[494,3034,1338],{"class":571},[494,3036,3037,3039],{"class":496,"line":1451},[494,3038,2955],{"class":571},[494,3040,673],{"class":650},[494,3042,3043],{"class":496,"line":1475},[494,3044,598],{"emptyLinePlaceholder":597},[494,3046,3047],{"class":496,"line":1480},[494,3048,3049],{"class":1653},"  \u002F\u002F Stage 3: Payment context\n",[494,3051,3052,3054,3057,3059,3061,3064,3066,3069],{"class":496,"line":1785},[494,3053,743],{"class":607},[494,3055,3056],{"class":575}," payment",[494,3058,635],{"class":571},[494,3060,1206],{"class":567},[494,3062,3063],{"class":638}," processPayment",[494,3065,641],{"class":650},[494,3067,3068],{"class":575},"body",[494,3070,673],{"class":650},[494,3072,3073,3075,3077,3079,3081],{"class":496,"line":1805},[494,3074,757],{"class":575},[494,3076,760],{"class":571},[494,3078,763],{"class":638},[494,3080,641],{"class":650},[494,3082,644],{"class":571},[494,3084,3085,3088,3090,3092,3094,3096,3098,3100,3103,3105,3108,3110,3112,3114,3117],{"class":496,"line":1811},[494,3086,3087],{"class":650},"    payment",[494,3089,654],{"class":571},[494,3091,572],{"class":571},[494,3093,1308],{"class":650},[494,3095,654],{"class":571},[494,3097,3056],{"class":575},[494,3099,760],{"class":571},[494,3101,3102],{"class":575},"method",[494,3104,616],{"class":571},[494,3106,3107],{"class":650}," cardLast4",[494,3109,654],{"class":571},[494,3111,3056],{"class":575},[494,3113,760],{"class":571},[494,3115,3116],{"class":575},"last4",[494,3118,1338],{"class":571},[494,3120,3121,3123],{"class":496,"line":2311},[494,3122,2955],{"class":571},[494,3124,673],{"class":650},[494,3126,3127],{"class":496,"line":2316},[494,3128,598],{"emptyLinePlaceholder":597},[494,3130,3131,3133,3135,3137,3139,3141,3143,3146,3148,3150,3152,3155,3157,3159,3161,3164,3166],{"class":496,"line":2322},[494,3132,790],{"class":567},[494,3134,793],{"class":575},[494,3136,760],{"class":571},[494,3138,798],{"class":638},[494,3140,641],{"class":650},[494,3142,768],{"class":571},[494,3144,3145],{"class":650}," success",[494,3147,654],{"class":571},[494,3149,1008],{"class":1007},[494,3151,616],{"class":571},[494,3153,3154],{"class":650}," orderId",[494,3156,654],{"class":571},[494,3158,3056],{"class":575},[494,3160,760],{"class":571},[494,3162,3163],{"class":575},"orderId",[494,3165,579],{"class":571},[494,3167,673],{"class":650},[494,3169,3170,3172],{"class":496,"line":2332},[494,3171,632],{"class":571},[494,3173,673],{"class":575},[408,3175,3176],{},"All fields are merged into a single wide event emitted when the handler completes:",[484,3178,3181],{"className":486,"code":3179,"filename":3180,"language":489,"meta":490,"style":490},"10:23:45.612 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n  ├─ user: id=usr_123 plan=enterprise\n  ├─ cart: items=3 total=14999 currency=USD\n  ├─ payment: method=card cardLast4=4242\n  └─ requestId: a1b2c3d4-...\n","Output (Pretty)",[412,3182,3183,3194,3208,3230,3246],{"__ignoreMap":490},[494,3184,3185,3188,3191],{"class":496,"line":497},[494,3186,3187],{"class":500},"10:23:45.612",[494,3189,3190],{"class":503}," INFO",[494,3192,3193],{"class":575}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n",[494,3195,3196,3199,3202,3205],{"class":496,"line":594},[494,3197,3198],{"class":500},"  ├─",[494,3200,3201],{"class":503}," user:",[494,3203,3204],{"class":503}," id=usr_123",[494,3206,3207],{"class":503}," plan=enterprise\n",[494,3209,3210,3212,3215,3218,3221,3224,3227],{"class":496,"line":601},[494,3211,3198],{"class":500},[494,3213,3214],{"class":503}," cart:",[494,3216,3217],{"class":503}," items=",[494,3219,3220],{"class":2167},"3",[494,3222,3223],{"class":503}," total=",[494,3225,3226],{"class":2167},"14999",[494,3228,3229],{"class":503}," currency=USD\n",[494,3231,3232,3234,3237,3240,3243],{"class":496,"line":647},[494,3233,3198],{"class":500},[494,3235,3236],{"class":503}," payment:",[494,3238,3239],{"class":503}," method=card",[494,3241,3242],{"class":503}," cardLast4=",[494,3244,3245],{"class":2167},"4242\n",[494,3247,3248,3251,3254],{"class":496,"line":668},[494,3249,3250],{"class":500},"  └─",[494,3252,3253],{"class":503}," requestId:",[494,3255,3256],{"class":503}," a1b2c3d4-...\n",[472,3258,3260,3261,1390],{"id":3259},"background-work-logfork","Background work (",[412,3262,3263],{},"log.fork",[408,3265,3266,3267,1858,3270,3272,3273,3278,3279,760],{},"Inside ",[412,3268,3269],{},"withEvlog",[412,3271,422],{}," returns a logger with ",[857,3274,3275],{},[412,3276,3277],{},"fork"," for child wide events. See ",[461,3280,3282],{"href":3281},"\u002Flogging\u002Fwide-events#after-emit-sealing-and-background-work","Wide events — After emit",[484,3284,3287],{"className":557,"code":3285,"filename":3286,"language":560,"meta":490,"style":490},"import { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async () => {\n  const log = useLogger()\n  log.fork!('enqueue', async () => {\n    const child = useLogger()\n    child.set({ job: 'queued' })\n  })\n  return Response.json({ ok: true })\n})\n","app\u002Fapi\u002Forders\u002Froute.ts",[412,3288,3289,3311,3315,3337,3349,3379,3392,3421,3427,3452],{"__ignoreMap":490},[494,3290,3291,3293,3295,3297,3299,3301,3303,3305,3307,3309],{"class":496,"line":497},[494,3292,568],{"class":567},[494,3294,572],{"class":571},[494,3296,613],{"class":575},[494,3298,616],{"class":571},[494,3300,619],{"class":575},[494,3302,579],{"class":571},[494,3304,582],{"class":567},[494,3306,585],{"class":571},[494,3308,704],{"class":503},[494,3310,591],{"class":571},[494,3312,3313],{"class":496,"line":594},[494,3314,598],{"emptyLinePlaceholder":597},[494,3316,3317,3319,3321,3323,3325,3327,3329,3331,3333,3335],{"class":496,"line":601},[494,3318,604],{"class":567},[494,3320,608],{"class":607},[494,3322,2837],{"class":575},[494,3324,722],{"class":571},[494,3326,613],{"class":638},[494,3328,641],{"class":575},[494,3330,729],{"class":607},[494,3332,732],{"class":571},[494,3334,735],{"class":607},[494,3336,738],{"class":571},[494,3338,3339,3341,3343,3345,3347],{"class":496,"line":647},[494,3340,743],{"class":607},[494,3342,624],{"class":575},[494,3344,635],{"class":571},[494,3346,619],{"class":638},[494,3348,752],{"class":650},[494,3350,3351,3353,3355,3357,3360,3362,3364,3367,3369,3371,3373,3375,3377],{"class":496,"line":668},[494,3352,757],{"class":575},[494,3354,760],{"class":571},[494,3356,3277],{"class":638},[494,3358,3359],{"class":571},"!",[494,3361,641],{"class":650},[494,3363,662],{"class":571},[494,3365,3366],{"class":503},"enqueue",[494,3368,662],{"class":571},[494,3370,616],{"class":571},[494,3372,1145],{"class":607},[494,3374,732],{"class":571},[494,3376,735],{"class":607},[494,3378,738],{"class":571},[494,3380,3381,3383,3386,3388,3390],{"class":496,"line":787},[494,3382,1195],{"class":607},[494,3384,3385],{"class":575}," child",[494,3387,635],{"class":571},[494,3389,619],{"class":638},[494,3391,752],{"class":650},[494,3393,3394,3397,3399,3401,3403,3405,3408,3410,3412,3415,3417,3419],{"class":496,"line":821},[494,3395,3396],{"class":575},"    child",[494,3398,760],{"class":571},[494,3400,763],{"class":638},[494,3402,641],{"class":650},[494,3404,768],{"class":571},[494,3406,3407],{"class":650}," job",[494,3409,654],{"class":571},[494,3411,585],{"class":571},[494,3413,3414],{"class":503},"queued",[494,3416,662],{"class":571},[494,3418,579],{"class":571},[494,3420,673],{"class":650},[494,3422,3423,3425],{"class":496,"line":1013},[494,3424,2955],{"class":571},[494,3426,673],{"class":650},[494,3428,3429,3431,3433,3435,3437,3439,3441,3444,3446,3448,3450],{"class":496,"line":1258},[494,3430,790],{"class":567},[494,3432,793],{"class":575},[494,3434,760],{"class":571},[494,3436,798],{"class":638},[494,3438,641],{"class":650},[494,3440,768],{"class":571},[494,3442,3443],{"class":650}," ok",[494,3445,654],{"class":571},[494,3447,1008],{"class":1007},[494,3449,579],{"class":571},[494,3451,673],{"class":650},[494,3453,3454,3456],{"class":496,"line":1288},[494,3455,632],{"class":571},[494,3457,673],{"class":575},[472,3459,3461],{"id":3460},"error-handling","Error Handling",[408,3463,3464,3465,3468,3469,1858,3472,3475,3476,3479],{},"Use ",[412,3466,3467],{},"createError"," for structured errors with ",[412,3470,3471],{},"why",[412,3473,3474],{},"fix",", and ",[412,3477,3478],{},"link"," fields that help developers debug in both logs and API responses:",[484,3481,3484],{"className":557,"code":3482,"filename":3483,"language":560,"meta":490,"style":490},"import { withEvlog, useLogger, createError } from '@\u002Flib\u002Fevlog'\n\nexport const POST = withEvlog(async (request: Request) => {\n  const log = useLogger()\n  const body = await request.json()\n\n  log.set({ payment: { amount: body.amount } })\n\n  if (body.amount \u003C= 0) {\n    throw createError({\n      status: 400,\n      message: 'Invalid payment amount',\n      why: 'The amount must be a positive number',\n      fix: 'Pass a positive integer in cents (e.g. 4999 for $49.99)',\n      link: 'https:\u002F\u002Fdocs.example.com\u002Fapi\u002Fpayments#amount',\n    })\n  }\n\n  const result = await chargeCard(body)\n\n  if (!result.success) {\n    log.error(new Error(`Payment declined: ${result.reason}`))\n    throw createError({\n      status: 402,\n      message: 'Payment declined',\n      why: `Card declined by issuer: ${result.reason}`,\n      fix: 'Try a different payment method or contact your bank',\n    })\n  }\n\n  return Response.json({ success: true })\n})\n","app\u002Fapi\u002Fpayment\u002Fprocess\u002Froute.ts",[412,3485,3486,3513,3517,3547,3559,3577,3581,3617,3621,3643,3654,3665,3681,3697,3713,3729,3736,3740,3744,3764,3768,3788,3827,3837,3848,3863,3887,3902,3908,3912,3916,3940],{"__ignoreMap":490},[494,3487,3488,3490,3492,3494,3496,3498,3500,3503,3505,3507,3509,3511],{"class":496,"line":497},[494,3489,568],{"class":567},[494,3491,572],{"class":571},[494,3493,613],{"class":575},[494,3495,616],{"class":571},[494,3497,619],{"class":575},[494,3499,616],{"class":571},[494,3501,3502],{"class":575}," createError",[494,3504,579],{"class":571},[494,3506,582],{"class":567},[494,3508,585],{"class":571},[494,3510,704],{"class":503},[494,3512,591],{"class":571},[494,3514,3515],{"class":496,"line":594},[494,3516,598],{"emptyLinePlaceholder":597},[494,3518,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545],{"class":496,"line":601},[494,3520,604],{"class":567},[494,3522,608],{"class":607},[494,3524,2837],{"class":575},[494,3526,722],{"class":571},[494,3528,613],{"class":638},[494,3530,641],{"class":575},[494,3532,729],{"class":607},[494,3534,1162],{"class":571},[494,3536,2850],{"class":1261},[494,3538,654],{"class":571},[494,3540,2855],{"class":500},[494,3542,1390],{"class":571},[494,3544,735],{"class":607},[494,3546,738],{"class":571},[494,3548,3549,3551,3553,3555,3557],{"class":496,"line":647},[494,3550,743],{"class":607},[494,3552,624],{"class":575},[494,3554,635],{"class":571},[494,3556,619],{"class":638},[494,3558,752],{"class":650},[494,3560,3561,3563,3565,3567,3569,3571,3573,3575],{"class":496,"line":668},[494,3562,743],{"class":607},[494,3564,2880],{"class":575},[494,3566,635],{"class":571},[494,3568,1206],{"class":567},[494,3570,1465],{"class":575},[494,3572,760],{"class":571},[494,3574,798],{"class":638},[494,3576,752],{"class":650},[494,3578,3579],{"class":496,"line":787},[494,3580,598],{"emptyLinePlaceholder":597},[494,3582,3583,3585,3587,3589,3591,3593,3595,3597,3599,3602,3604,3606,3608,3611,3613,3615],{"class":496,"line":821},[494,3584,757],{"class":575},[494,3586,760],{"class":571},[494,3588,763],{"class":638},[494,3590,641],{"class":650},[494,3592,768],{"class":571},[494,3594,3056],{"class":650},[494,3596,654],{"class":571},[494,3598,572],{"class":571},[494,3600,3601],{"class":650}," amount",[494,3603,654],{"class":571},[494,3605,2880],{"class":575},[494,3607,760],{"class":571},[494,3609,3610],{"class":575},"amount",[494,3612,579],{"class":571},[494,3614,579],{"class":571},[494,3616,673],{"class":650},[494,3618,3619],{"class":496,"line":1013},[494,3620,598],{"emptyLinePlaceholder":597},[494,3622,3623,3625,3627,3629,3631,3633,3636,3639,3641],{"class":496,"line":1258},[494,3624,1159],{"class":567},[494,3626,1162],{"class":650},[494,3628,3068],{"class":575},[494,3630,760],{"class":571},[494,3632,3610],{"class":575},[494,3634,3635],{"class":571}," \u003C=",[494,3637,3638],{"class":2167}," 0",[494,3640,1188],{"class":650},[494,3642,644],{"class":571},[494,3644,3645,3648,3650,3652],{"class":496,"line":1288},[494,3646,3647],{"class":567},"    throw",[494,3649,3502],{"class":638},[494,3651,641],{"class":650},[494,3653,644],{"class":571},[494,3655,3656,3659,3661,3663],{"class":496,"line":1341},[494,3657,3658],{"class":650},"      status",[494,3660,654],{"class":571},[494,3662,2374],{"class":2167},[494,3664,665],{"class":571},[494,3666,3667,3670,3672,3674,3677,3679],{"class":496,"line":1387},[494,3668,3669],{"class":650},"      message",[494,3671,654],{"class":571},[494,3673,585],{"class":571},[494,3675,3676],{"class":503},"Invalid payment amount",[494,3678,662],{"class":571},[494,3680,665],{"class":571},[494,3682,3683,3686,3688,3690,3693,3695],{"class":496,"line":1395},[494,3684,3685],{"class":650},"      why",[494,3687,654],{"class":571},[494,3689,585],{"class":571},[494,3691,3692],{"class":503},"The amount must be a positive number",[494,3694,662],{"class":571},[494,3696,665],{"class":571},[494,3698,3699,3702,3704,3706,3709,3711],{"class":496,"line":1424},[494,3700,3701],{"class":650},"      fix",[494,3703,654],{"class":571},[494,3705,585],{"class":571},[494,3707,3708],{"class":503},"Pass a positive integer in cents (e.g. 4999 for $49.99)",[494,3710,662],{"class":571},[494,3712,665],{"class":571},[494,3714,3715,3718,3720,3722,3725,3727],{"class":496,"line":1451},[494,3716,3717],{"class":650},"      link",[494,3719,654],{"class":571},[494,3721,585],{"class":571},[494,3723,3724],{"class":503},"https:\u002F\u002Fdocs.example.com\u002Fapi\u002Fpayments#amount",[494,3726,662],{"class":571},[494,3728,665],{"class":571},[494,3730,3731,3734],{"class":496,"line":1475},[494,3732,3733],{"class":571},"    }",[494,3735,673],{"class":650},[494,3737,3738],{"class":496,"line":1480},[494,3739,1232],{"class":571},[494,3741,3742],{"class":496,"line":1785},[494,3743,598],{"emptyLinePlaceholder":597},[494,3745,3746,3748,3751,3753,3755,3758,3760,3762],{"class":496,"line":1805},[494,3747,743],{"class":607},[494,3749,3750],{"class":575}," result",[494,3752,635],{"class":571},[494,3754,1206],{"class":567},[494,3756,3757],{"class":638}," chargeCard",[494,3759,641],{"class":650},[494,3761,3068],{"class":575},[494,3763,673],{"class":650},[494,3765,3766],{"class":496,"line":1811},[494,3767,598],{"emptyLinePlaceholder":597},[494,3769,3770,3772,3774,3776,3779,3781,3784,3786],{"class":496,"line":2311},[494,3771,1159],{"class":567},[494,3773,1162],{"class":650},[494,3775,3359],{"class":571},[494,3777,3778],{"class":575},"result",[494,3780,760],{"class":571},[494,3782,3783],{"class":575},"success",[494,3785,1188],{"class":650},[494,3787,644],{"class":571},[494,3789,3790,3793,3795,3797,3799,3802,3804,3806,3809,3812,3815,3817,3819,3822,3825],{"class":496,"line":2316},[494,3791,3792],{"class":575},"    log",[494,3794,760],{"class":571},[494,3796,1460],{"class":638},[494,3798,641],{"class":650},[494,3800,3801],{"class":571},"new",[494,3803,1283],{"class":638},[494,3805,641],{"class":650},[494,3807,3808],{"class":571},"`",[494,3810,3811],{"class":503},"Payment declined: ",[494,3813,3814],{"class":571},"${",[494,3816,3778],{"class":575},[494,3818,760],{"class":571},[494,3820,3821],{"class":575},"reason",[494,3823,3824],{"class":571},"}`",[494,3826,1120],{"class":650},[494,3828,3829,3831,3833,3835],{"class":496,"line":2322},[494,3830,3647],{"class":567},[494,3832,3502],{"class":638},[494,3834,641],{"class":650},[494,3836,644],{"class":571},[494,3838,3839,3841,3843,3846],{"class":496,"line":2332},[494,3840,3658],{"class":650},[494,3842,654],{"class":571},[494,3844,3845],{"class":2167}," 402",[494,3847,665],{"class":571},[494,3849,3850,3852,3854,3856,3859,3861],{"class":496,"line":2352},[494,3851,3669],{"class":650},[494,3853,654],{"class":571},[494,3855,585],{"class":571},[494,3857,3858],{"class":503},"Payment declined",[494,3860,662],{"class":571},[494,3862,665],{"class":571},[494,3864,3865,3867,3869,3872,3875,3877,3879,3881,3883,3885],{"class":496,"line":2363},[494,3866,3685],{"class":650},[494,3868,654],{"class":571},[494,3870,3871],{"class":571}," `",[494,3873,3874],{"class":503},"Card declined by issuer: ",[494,3876,3814],{"class":571},[494,3878,3778],{"class":575},[494,3880,760],{"class":571},[494,3882,3821],{"class":575},[494,3884,3824],{"class":571},[494,3886,665],{"class":571},[494,3888,3889,3891,3893,3895,3898,3900],{"class":496,"line":2383},[494,3890,3701],{"class":650},[494,3892,654],{"class":571},[494,3894,585],{"class":571},[494,3896,3897],{"class":503},"Try a different payment method or contact your bank",[494,3899,662],{"class":571},[494,3901,665],{"class":571},[494,3903,3904,3906],{"class":496,"line":2401},[494,3905,3733],{"class":571},[494,3907,673],{"class":650},[494,3909,3910],{"class":496,"line":2422},[494,3911,1232],{"class":571},[494,3913,3914],{"class":496,"line":2430},[494,3915,598],{"emptyLinePlaceholder":597},[494,3917,3918,3920,3922,3924,3926,3928,3930,3932,3934,3936,3938],{"class":496,"line":2436},[494,3919,790],{"class":567},[494,3921,793],{"class":575},[494,3923,760],{"class":571},[494,3925,798],{"class":638},[494,3927,641],{"class":650},[494,3929,768],{"class":571},[494,3931,3145],{"class":650},[494,3933,654],{"class":571},[494,3935,1008],{"class":1007},[494,3937,579],{"class":571},[494,3939,673],{"class":650},[494,3941,3942,3944],{"class":496,"line":2441},[494,3943,632],{"class":571},[494,3945,673],{"class":575},[408,3947,3948,3950,3951,3954],{},[412,3949,418],{}," catches ",[412,3952,3953],{},"EvlogError"," and returns a structured JSON response (like Nitro does for Nuxt):",[484,3956,3960],{"className":3957,"code":3958,"filename":3959,"language":798,"meta":490,"style":490},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"name\": \"EvlogError\",\n  \"message\": \"Payment declined\",\n  \"status\": 402,\n  \"data\": {\n    \"why\": \"Card declined by issuer: insufficient_funds\",\n    \"fix\": \"Try a different payment method or contact your bank\"\n  }\n}\n","Response (402)",[412,3961,3962,3966,3988,4007,4022,4035,4055,4072,4076],{"__ignoreMap":490},[494,3963,3964],{"class":496,"line":497},[494,3965,644],{"class":571},[494,3967,3968,3971,3974,3977,3979,3982,3984,3986],{"class":496,"line":594},[494,3969,3970],{"class":571},"  \"",[494,3972,3973],{"class":607},"name",[494,3975,3976],{"class":571},"\"",[494,3978,654],{"class":571},[494,3980,3981],{"class":571}," \"",[494,3983,3953],{"class":503},[494,3985,3976],{"class":571},[494,3987,665],{"class":571},[494,3989,3990,3992,3995,3997,3999,4001,4003,4005],{"class":496,"line":601},[494,3991,3970],{"class":571},[494,3993,3994],{"class":607},"message",[494,3996,3976],{"class":571},[494,3998,654],{"class":571},[494,4000,3981],{"class":571},[494,4002,3858],{"class":503},[494,4004,3976],{"class":571},[494,4006,665],{"class":571},[494,4008,4009,4011,4014,4016,4018,4020],{"class":496,"line":647},[494,4010,3970],{"class":571},[494,4012,4013],{"class":607},"status",[494,4015,3976],{"class":571},[494,4017,654],{"class":571},[494,4019,3845],{"class":2167},[494,4021,665],{"class":571},[494,4023,4024,4026,4029,4031,4033],{"class":496,"line":668},[494,4025,3970],{"class":571},[494,4027,4028],{"class":607},"data",[494,4030,3976],{"class":571},[494,4032,654],{"class":571},[494,4034,738],{"class":571},[494,4036,4037,4040,4042,4044,4046,4048,4051,4053],{"class":496,"line":787},[494,4038,4039],{"class":571},"    \"",[494,4041,3471],{"class":500},[494,4043,3976],{"class":571},[494,4045,654],{"class":571},[494,4047,3981],{"class":571},[494,4049,4050],{"class":503},"Card declined by issuer: insufficient_funds",[494,4052,3976],{"class":571},[494,4054,665],{"class":571},[494,4056,4057,4059,4061,4063,4065,4067,4069],{"class":496,"line":821},[494,4058,4039],{"class":571},[494,4060,3474],{"class":500},[494,4062,3976],{"class":571},[494,4064,654],{"class":571},[494,4066,3981],{"class":571},[494,4068,3897],{"class":503},[494,4070,4071],{"class":571},"\"\n",[494,4073,4074],{"class":496,"line":1013},[494,4075,1232],{"class":571},[494,4077,4078],{"class":496,"line":1258},[494,4079,1237],{"class":571},[408,4081,4082],{},"In the terminal, the error renders with colored output:",[484,4084,4087],{"className":486,"code":4085,"filename":4086,"language":489,"meta":490,"style":490},"Error: Payment declined\nWhy: Card declined by issuer: insufficient_funds\nFix: Try a different payment method or contact your bank\n","Terminal output",[412,4088,4089,4100,4120],{"__ignoreMap":490},[494,4090,4091,4094,4097],{"class":496,"line":497},[494,4092,4093],{"class":500},"Error:",[494,4095,4096],{"class":503}," Payment",[494,4098,4099],{"class":503}," declined\n",[494,4101,4102,4105,4108,4111,4114,4117],{"class":496,"line":594},[494,4103,4104],{"class":500},"Why:",[494,4106,4107],{"class":503}," Card",[494,4109,4110],{"class":503}," declined",[494,4112,4113],{"class":503}," by",[494,4115,4116],{"class":503}," issuer:",[494,4118,4119],{"class":503}," insufficient_funds\n",[494,4121,4122,4125,4128,4131,4134,4136,4138,4141,4144,4147],{"class":496,"line":601},[494,4123,4124],{"class":500},"Fix:",[494,4126,4127],{"class":503}," Try",[494,4129,4130],{"class":503}," a",[494,4132,4133],{"class":503}," different",[494,4135,3056],{"class":503},[494,4137,1308],{"class":503},[494,4139,4140],{"class":503}," or",[494,4142,4143],{"class":503}," contact",[494,4145,4146],{"class":503}," your",[494,4148,4149],{"class":503}," bank\n",[476,4151,4153],{"id":4152},"parsing-errors-on-the-client","Parsing Errors on the Client",[408,4155,3464,4156,4159,4160,4162,4163,4166],{},[412,4157,4158],{},"parseError"," to extract the structured fields from any error, whether it's a fetch response, an ",[412,4161,3953],{},", or a plain ",[412,4164,4165],{},"Error"," object:",[484,4168,4173],{"className":4169,"code":4170,"filename":4171,"language":4172,"meta":490,"style":490},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","'use client'\nimport { parseError } from 'evlog'\n\nasync function handleSubmit(formData: FormData) {\n  try {\n    const res = await fetch('\u002Fapi\u002Fpayment\u002Fprocess', {\n      method: 'POST',\n      body: JSON.stringify({ amount: Number(formData.get('amount')) }),\n    })\n    if (!res.ok) throw { data: await res.json(), status: res.status }\n  } catch (error) {\n    const { message, status, why, fix, link } = parseError(error)\n    \u002F\u002F message: \"Payment declined\"\n    \u002F\u002F why: \"Card declined by issuer: insufficient_funds\"\n    \u002F\u002F fix: \"Try a different payment method or contact your bank\"\n  }\n}\n","app\u002Fcomponents\u002FPaymentForm.tsx","tsx",[412,4174,4175,4184,4203,4207,4230,4237,4264,4280,4331,4337,4390,4405,4444,4449,4454,4459,4463],{"__ignoreMap":490},[494,4176,4177,4179,4182],{"class":496,"line":497},[494,4178,662],{"class":571},[494,4180,4181],{"class":503},"use client",[494,4183,591],{"class":571},[494,4185,4186,4188,4190,4193,4195,4197,4199,4201],{"class":496,"line":594},[494,4187,568],{"class":567},[494,4189,572],{"class":571},[494,4191,4192],{"class":575}," parseError",[494,4194,579],{"class":571},[494,4196,582],{"class":567},[494,4198,585],{"class":571},[494,4200,2003],{"class":503},[494,4202,591],{"class":571},[494,4204,4205],{"class":496,"line":601},[494,4206,598],{"emptyLinePlaceholder":597},[494,4208,4209,4211,4213,4216,4218,4221,4223,4226,4228],{"class":496,"line":647},[494,4210,729],{"class":607},[494,4212,1148],{"class":607},[494,4214,4215],{"class":638}," handleSubmit",[494,4217,641],{"class":571},[494,4219,4220],{"class":1261},"formData",[494,4222,654],{"class":571},[494,4224,4225],{"class":500}," FormData",[494,4227,1390],{"class":571},[494,4229,738],{"class":571},[494,4231,4232,4235],{"class":496,"line":668},[494,4233,4234],{"class":567},"  try",[494,4236,738],{"class":571},[494,4238,4239,4241,4244,4246,4248,4251,4253,4255,4258,4260,4262],{"class":496,"line":787},[494,4240,1195],{"class":607},[494,4242,4243],{"class":575}," res",[494,4245,635],{"class":571},[494,4247,1206],{"class":567},[494,4249,4250],{"class":638}," fetch",[494,4252,641],{"class":650},[494,4254,662],{"class":571},[494,4256,4257],{"class":503},"\u002Fapi\u002Fpayment\u002Fprocess",[494,4259,662],{"class":571},[494,4261,616],{"class":571},[494,4263,738],{"class":571},[494,4265,4266,4269,4271,4273,4276,4278],{"class":496,"line":821},[494,4267,4268],{"class":650},"      method",[494,4270,654],{"class":571},[494,4272,585],{"class":571},[494,4274,4275],{"class":503},"POST",[494,4277,662],{"class":571},[494,4279,665],{"class":571},[494,4281,4282,4285,4287,4290,4292,4294,4296,4298,4300,4302,4305,4307,4309,4311,4314,4316,4318,4320,4322,4325,4327,4329],{"class":496,"line":1013},[494,4283,4284],{"class":650},"      body",[494,4286,654],{"class":571},[494,4288,4289],{"class":575}," JSON",[494,4291,760],{"class":571},[494,4293,1919],{"class":638},[494,4295,641],{"class":650},[494,4297,768],{"class":571},[494,4299,3601],{"class":650},[494,4301,654],{"class":571},[494,4303,4304],{"class":638}," Number",[494,4306,641],{"class":650},[494,4308,4220],{"class":575},[494,4310,760],{"class":571},[494,4312,4313],{"class":638},"get",[494,4315,641],{"class":650},[494,4317,662],{"class":571},[494,4319,3610],{"class":503},[494,4321,662],{"class":571},[494,4323,4324],{"class":650},")) ",[494,4326,632],{"class":571},[494,4328,1390],{"class":650},[494,4330,665],{"class":571},[494,4332,4333,4335],{"class":496,"line":1258},[494,4334,3733],{"class":571},[494,4336,673],{"class":650},[494,4338,4339,4341,4343,4345,4348,4350,4353,4355,4358,4360,4363,4365,4367,4369,4371,4373,4375,4377,4379,4381,4383,4385,4387],{"class":496,"line":1288},[494,4340,2622],{"class":567},[494,4342,1162],{"class":650},[494,4344,3359],{"class":571},[494,4346,4347],{"class":575},"res",[494,4349,760],{"class":571},[494,4351,4352],{"class":575},"ok",[494,4354,1188],{"class":650},[494,4356,4357],{"class":567},"throw",[494,4359,572],{"class":571},[494,4361,4362],{"class":650}," data",[494,4364,654],{"class":571},[494,4366,1206],{"class":567},[494,4368,4243],{"class":575},[494,4370,760],{"class":571},[494,4372,798],{"class":638},[494,4374,995],{"class":650},[494,4376,616],{"class":571},[494,4378,2369],{"class":650},[494,4380,654],{"class":571},[494,4382,4243],{"class":575},[494,4384,760],{"class":571},[494,4386,4013],{"class":575},[494,4388,4389],{"class":571}," }\n",[494,4391,4392,4394,4397,4399,4401,4403],{"class":496,"line":1341},[494,4393,2955],{"class":571},[494,4395,4396],{"class":567}," catch",[494,4398,1162],{"class":650},[494,4400,1460],{"class":575},[494,4402,1188],{"class":650},[494,4404,644],{"class":571},[494,4406,4407,4409,4411,4413,4415,4417,4419,4422,4424,4427,4429,4432,4434,4436,4438,4440,4442],{"class":496,"line":1387},[494,4408,1195],{"class":607},[494,4410,572],{"class":571},[494,4412,805],{"class":575},[494,4414,616],{"class":571},[494,4416,2369],{"class":575},[494,4418,616],{"class":571},[494,4420,4421],{"class":575}," why",[494,4423,616],{"class":571},[494,4425,4426],{"class":575}," fix",[494,4428,616],{"class":571},[494,4430,4431],{"class":575}," link",[494,4433,579],{"class":571},[494,4435,635],{"class":571},[494,4437,4192],{"class":638},[494,4439,641],{"class":650},[494,4441,1460],{"class":575},[494,4443,673],{"class":650},[494,4445,4446],{"class":496,"line":1395},[494,4447,4448],{"class":1653},"    \u002F\u002F message: \"Payment declined\"\n",[494,4450,4451],{"class":496,"line":1424},[494,4452,4453],{"class":1653},"    \u002F\u002F why: \"Card declined by issuer: insufficient_funds\"\n",[494,4455,4456],{"class":496,"line":1451},[494,4457,4458],{"class":1653},"    \u002F\u002F fix: \"Try a different payment method or contact your bank\"\n",[494,4460,4461],{"class":496,"line":1475},[494,4462,1232],{"class":571},[494,4464,4465],{"class":496,"line":1480},[494,4466,1237],{"class":571},[408,4468,4469,4471,4472,4475,4476,4479],{},[412,4470,4158],{}," normalizes any error shape into a flat ",[412,4473,4474],{},"{ message, status, why?, fix?, link? }"," object, so your UI code never has to dig through nested ",[412,4477,4478],{},"data.data"," or check for different error formats.",[472,4481,170],{"id":4482},"configuration-1",[846,4484,4485,4486,4489,4490,1858,4492,1858,4494,1858,4496,4498],{"color":848,"icon":64},"See the ",[461,4487,4488],{"href":171},"Configuration reference"," for the full list of shared options (",[412,4491,1902],{},[412,4493,1910],{},[412,4495,1913],{},[412,4497,1916],{},", middleware options, etc.).",[408,4500,1896,4501,4503],{},[412,4502,414],{}," factory accepts the following options:",[1924,4505,4506,4518],{},[1927,4507,4508],{},[1930,4509,4510,4512,4514,4516],{},[1933,4511,1935],{},[1933,4513,1938],{},[1933,4515,1941],{},[1933,4517,1944],{},[1946,4519,4520,4538,4555,4575,4593,4612,4631,4650,4669,4687],{},[1930,4521,4522,4526,4530,4535],{},[1951,4523,4524],{},[412,4525,1905],{},[1951,4527,4528],{},[412,4529,1328],{},[1951,4531,4532],{},[412,4533,4534],{},"'app'",[1951,4536,4537],{},"Service name shown in logs",[1930,4539,4540,4545,4549,4552],{},[1951,4541,4542],{},[412,4543,4544],{},"environment",[1951,4546,4547],{},[412,4548,1328],{},[1951,4550,4551],{},"Auto-detected",[1951,4553,4554],{},"Environment name",[1930,4556,4557,4562,4567,4572],{},[1951,4558,4559],{},[412,4560,4561],{},"include",[1951,4563,4564],{},[412,4565,4566],{},"string[]",[1951,4568,4569],{},[412,4570,4571],{},"undefined",[1951,4573,4574],{},"Route patterns to log",[1930,4576,4577,4582,4586,4590],{},[1951,4578,4579],{},[412,4580,4581],{},"exclude",[1951,4583,4584],{},[412,4585,4566],{},[1951,4587,4588],{},[412,4589,4571],{},[1951,4591,4592],{},"Route patterns to exclude",[1930,4594,4595,4600,4605,4609],{},[1951,4596,4597],{},[412,4598,4599],{},"routes",[1951,4601,4602],{},[412,4603,4604],{},"Record\u003Cstring, RouteConfig>",[1951,4606,4607],{},[412,4608,4571],{},[1951,4610,4611],{},"Route-specific service configuration",[1930,4613,4614,4619,4624,4628],{},[1951,4615,4616],{},[412,4617,4618],{},"sampling.rates",[1951,4620,4621],{},[412,4622,4623],{},"object",[1951,4625,4626],{},[412,4627,4571],{},[1951,4629,4630],{},"Head sampling rates per log level",[1930,4632,4633,4638,4643,4647],{},[1951,4634,4635],{},[412,4636,4637],{},"sampling.keep",[1951,4639,4640],{},[412,4641,4642],{},"array",[1951,4644,4645],{},[412,4646,4571],{},[1951,4648,4649],{},"Tail sampling conditions",[1930,4651,4652,4657,4662,4666],{},[1951,4653,4654],{},[412,4655,4656],{},"keep",[1951,4658,4659],{},[412,4660,4661],{},"(ctx: TailSamplingContext) => void",[1951,4663,4664],{},[412,4665,4571],{},[1951,4667,4668],{},"Custom tail sampling callback",[1930,4670,4671,4675,4680,4684],{},[1951,4672,4673],{},[412,4674,890],{},[1951,4676,4677],{},[412,4678,4679],{},"DrainFunction",[1951,4681,4682],{},[412,4683,4571],{},[1951,4685,4686],{},"Drain adapter for external services",[1930,4688,4689,4694,4699,4703],{},[1951,4690,4691],{},[412,4692,4693],{},"enrich",[1951,4695,4696],{},[412,4697,4698],{},"(ctx: EnrichContext) => void",[1951,4700,4701],{},[412,4702,4571],{},[1951,4704,4705],{},"Event enrichment callback",[472,4707,4709],{"id":4708},"tail-sampling","Tail Sampling",[408,4711,4712],{},"Combine rule-based and custom tail sampling to always capture what matters, even when head sampling drops most logs:",[484,4714,4716],{"className":557,"code":4715,"filename":559,"language":560,"meta":490,"style":490},"export const { withEvlog, useLogger } = createEvlog({\n  service: 'my-app',\n  sampling: {\n    rates: { info: 10 }, \u002F\u002F Only keep 10% of info logs\n    keep: [\n      { status: 400 },              \u002F\u002F Always keep 4xx\u002F5xx\n      { duration: 1000 },           \u002F\u002F Always keep slow requests\n      { path: '\u002Fapi\u002Fcritical\u002F**' }, \u002F\u002F Always keep critical paths\n    ],\n  },\n  \u002F\u002F Custom: always keep premium user requests\n  keep: (ctx) => {\n    const user = ctx.context.user as { premium?: boolean } | undefined\n    if (user?.premium) ctx.shouldKeep = true\n  },\n})\n",[412,4717,4718,4743,4757,4765,4784,4792,4807,4821,4839,4845,4849,4854,4870,4904,4928,4932],{"__ignoreMap":490},[494,4719,4720,4722,4724,4726,4728,4730,4733,4735,4737,4739,4741],{"class":496,"line":497},[494,4721,604],{"class":567},[494,4723,608],{"class":607},[494,4725,572],{"class":571},[494,4727,613],{"class":575},[494,4729,616],{"class":571},[494,4731,4732],{"class":575}," useLogger ",[494,4734,632],{"class":571},[494,4736,635],{"class":571},[494,4738,576],{"class":638},[494,4740,641],{"class":575},[494,4742,644],{"class":571},[494,4744,4745,4747,4749,4751,4753,4755],{"class":496,"line":594},[494,4746,651],{"class":650},[494,4748,654],{"class":571},[494,4750,585],{"class":571},[494,4752,659],{"class":503},[494,4754,662],{"class":571},[494,4756,665],{"class":571},[494,4758,4759,4761,4763],{"class":496,"line":601},[494,4760,2325],{"class":650},[494,4762,654],{"class":571},[494,4764,738],{"class":571},[494,4766,4767,4769,4771,4773,4775,4777,4779,4781],{"class":496,"line":647},[494,4768,2335],{"class":650},[494,4770,654],{"class":571},[494,4772,572],{"class":571},[494,4774,2342],{"class":650},[494,4776,654],{"class":571},[494,4778,2347],{"class":2167},[494,4780,2377],{"class":571},[494,4782,4783],{"class":1653}," \u002F\u002F Only keep 10% of info logs\n",[494,4785,4786,4788,4790],{"class":496,"line":668},[494,4787,2355],{"class":650},[494,4789,654],{"class":571},[494,4791,2360],{"class":575},[494,4793,4794,4796,4798,4800,4802,4804],{"class":496,"line":787},[494,4795,2366],{"class":571},[494,4797,2369],{"class":650},[494,4799,654],{"class":571},[494,4801,2374],{"class":2167},[494,4803,2377],{"class":571},[494,4805,4806],{"class":1653},"              \u002F\u002F Always keep 4xx\u002F5xx\n",[494,4808,4809,4811,4813,4815,4817,4819],{"class":496,"line":821},[494,4810,2366],{"class":571},[494,4812,2388],{"class":650},[494,4814,654],{"class":571},[494,4816,2393],{"class":2167},[494,4818,2377],{"class":571},[494,4820,2398],{"class":1653},[494,4822,4823,4825,4827,4829,4831,4833,4835,4837],{"class":496,"line":1013},[494,4824,2366],{"class":571},[494,4826,1298],{"class":650},[494,4828,654],{"class":571},[494,4830,585],{"class":571},[494,4832,2412],{"class":503},[494,4834,662],{"class":571},[494,4836,2377],{"class":571},[494,4838,2419],{"class":1653},[494,4840,4841,4843],{"class":496,"line":1258},[494,4842,2425],{"class":575},[494,4844,665],{"class":571},[494,4846,4847],{"class":496,"line":1288},[494,4848,2433],{"class":571},[494,4850,4851],{"class":496,"line":1341},[494,4852,4853],{"class":1653},"  \u002F\u002F Custom: always keep premium user requests\n",[494,4855,4856,4858,4860,4862,4864,4866,4868],{"class":496,"line":1387},[494,4857,2559],{"class":638},[494,4859,654],{"class":571},[494,4861,1162],{"class":571},[494,4863,2566],{"class":1261},[494,4865,1390],{"class":571},[494,4867,735],{"class":607},[494,4869,738],{"class":571},[494,4871,4872,4874,4876,4878,4880,4882,4884,4886,4888,4890,4892,4894,4896,4898,4900,4902],{"class":496,"line":1395},[494,4873,1195],{"class":607},[494,4875,2580],{"class":575},[494,4877,635],{"class":571},[494,4879,2585],{"class":575},[494,4881,760],{"class":571},[494,4883,2590],{"class":575},[494,4885,760],{"class":571},[494,4887,2595],{"class":575},[494,4889,2598],{"class":567},[494,4891,572],{"class":571},[494,4893,2603],{"class":650},[494,4895,1272],{"class":571},[494,4897,2608],{"class":500},[494,4899,579],{"class":571},[494,4901,2613],{"class":571},[494,4903,2616],{"class":500},[494,4905,4906,4908,4910,4912,4914,4916,4918,4920,4922,4924,4926],{"class":496,"line":1424},[494,4907,2622],{"class":567},[494,4909,1162],{"class":650},[494,4911,2595],{"class":575},[494,4913,2629],{"class":571},[494,4915,2632],{"class":575},[494,4917,1188],{"class":650},[494,4919,2566],{"class":575},[494,4921,760],{"class":571},[494,4923,2641],{"class":575},[494,4925,635],{"class":571},[494,4927,2646],{"class":1007},[494,4929,4930],{"class":496,"line":1451},[494,4931,2433],{"class":571},[494,4933,4934,4936],{"class":496,"line":1475},[494,4935,632],{"class":571},[494,4937,673],{"class":575},[408,4939,1896,4940,4942],{},[412,4941,4656],{}," rules use OR logic: any match forces the event through regardless of head sampling.",[472,4944,114],{"id":4945},"middleware",[408,4947,4948,4949,1509,4952,4955,4956,4958],{},"Set ",[412,4950,4951],{},"x-request-id",[412,4953,4954],{},"x-evlog-start"," headers so ",[412,4957,418],{}," can correlate timing across the middleware -> handler chain:",[484,4960,4963],{"className":557,"code":4961,"filename":4962,"language":560,"meta":490,"style":490},"import { evlogMiddleware } from 'evlog\u002Fnext'\n\nexport const proxy = evlogMiddleware()\n\nexport const config = {\n  matcher: ['\u002Fapi\u002F:path*'],\n}\n","proxy.ts",[412,4964,4965,4984,4988,5003,5007,5020,5041],{"__ignoreMap":490},[494,4966,4967,4969,4971,4974,4976,4978,4980,4982],{"class":496,"line":497},[494,4968,568],{"class":567},[494,4970,572],{"class":571},[494,4972,4973],{"class":575}," evlogMiddleware",[494,4975,579],{"class":571},[494,4977,582],{"class":567},[494,4979,585],{"class":571},[494,4981,588],{"class":503},[494,4983,591],{"class":571},[494,4985,4986],{"class":496,"line":594},[494,4987,598],{"emptyLinePlaceholder":597},[494,4989,4990,4992,4994,4997,4999,5001],{"class":496,"line":601},[494,4991,604],{"class":567},[494,4993,608],{"class":607},[494,4995,4996],{"class":575}," proxy ",[494,4998,722],{"class":571},[494,5000,4973],{"class":638},[494,5002,752],{"class":575},[494,5004,5005],{"class":496,"line":647},[494,5006,598],{"emptyLinePlaceholder":597},[494,5008,5009,5011,5013,5016,5018],{"class":496,"line":668},[494,5010,604],{"class":567},[494,5012,608],{"class":607},[494,5014,5015],{"class":575}," config ",[494,5017,722],{"class":571},[494,5019,738],{"class":571},[494,5021,5022,5025,5027,5029,5031,5034,5036,5039],{"class":496,"line":787},[494,5023,5024],{"class":650},"  matcher",[494,5026,654],{"class":571},[494,5028,2109],{"class":575},[494,5030,662],{"class":571},[494,5032,5033],{"class":503},"\u002Fapi\u002F:path*",[494,5035,662],{"class":571},[494,5037,5038],{"class":575},"]",[494,5040,665],{"class":571},[494,5042,5043],{"class":496,"line":821},[494,5044,1237],{"class":571},[846,5046,5047,5048,5051,5052,5054,5055,5057],{"color":848,"icon":13},"Older versions of Next.js use ",[412,5049,5050],{},"middleware.ts"," instead of ",[412,5053,4962],{},". The evlog middleware works with both, so just import from ",[412,5056,588],{}," regardless.",[472,5059,5061],{"id":5060},"server-actions","Server Actions",[408,5063,5064,5066],{},[412,5065,418],{}," also works with Server Actions. Wrap your action to get full request-scoped logging:",[484,5068,5071],{"className":557,"code":5069,"filename":5070,"language":560,"meta":490,"style":490},"'use server'\nimport { withEvlog, useLogger } from '@\u002Flib\u002Fevlog'\n\nexport const checkout = withEvlog(async (formData: FormData) => {\n  const log = useLogger()\n  log.set({ action: 'checkout', cartId: formData.get('cartId') })\n  \u002F\u002F ...\n})\n","app\u002Factions\u002Fcheckout.ts",[412,5072,5073,5082,5104,5108,5139,5151,5203,5208],{"__ignoreMap":490},[494,5074,5075,5077,5080],{"class":496,"line":497},[494,5076,662],{"class":571},[494,5078,5079],{"class":503},"use server",[494,5081,591],{"class":571},[494,5083,5084,5086,5088,5090,5092,5094,5096,5098,5100,5102],{"class":496,"line":594},[494,5085,568],{"class":567},[494,5087,572],{"class":571},[494,5089,613],{"class":575},[494,5091,616],{"class":571},[494,5093,619],{"class":575},[494,5095,579],{"class":571},[494,5097,582],{"class":567},[494,5099,585],{"class":571},[494,5101,704],{"class":503},[494,5103,591],{"class":571},[494,5105,5106],{"class":496,"line":601},[494,5107,598],{"emptyLinePlaceholder":597},[494,5109,5110,5112,5114,5117,5119,5121,5123,5125,5127,5129,5131,5133,5135,5137],{"class":496,"line":647},[494,5111,604],{"class":567},[494,5113,608],{"class":607},[494,5115,5116],{"class":575}," checkout ",[494,5118,722],{"class":571},[494,5120,613],{"class":638},[494,5122,641],{"class":575},[494,5124,729],{"class":607},[494,5126,1162],{"class":571},[494,5128,4220],{"class":1261},[494,5130,654],{"class":571},[494,5132,4225],{"class":500},[494,5134,1390],{"class":571},[494,5136,735],{"class":607},[494,5138,738],{"class":571},[494,5140,5141,5143,5145,5147,5149],{"class":496,"line":668},[494,5142,743],{"class":607},[494,5144,624],{"class":575},[494,5146,635],{"class":571},[494,5148,619],{"class":638},[494,5150,752],{"class":650},[494,5152,5153,5155,5157,5159,5161,5163,5165,5167,5169,5172,5174,5176,5179,5181,5184,5186,5188,5190,5192,5195,5197,5199,5201],{"class":496,"line":787},[494,5154,757],{"class":575},[494,5156,760],{"class":571},[494,5158,763],{"class":638},[494,5160,641],{"class":650},[494,5162,768],{"class":571},[494,5164,771],{"class":650},[494,5166,654],{"class":571},[494,5168,585],{"class":571},[494,5170,5171],{"class":503},"checkout",[494,5173,662],{"class":571},[494,5175,616],{"class":571},[494,5177,5178],{"class":650}," cartId",[494,5180,654],{"class":571},[494,5182,5183],{"class":575}," formData",[494,5185,760],{"class":571},[494,5187,4313],{"class":638},[494,5189,641],{"class":650},[494,5191,662],{"class":571},[494,5193,5194],{"class":503},"cartId",[494,5196,662],{"class":571},[494,5198,1188],{"class":650},[494,5200,632],{"class":571},[494,5202,673],{"class":650},[494,5204,5205],{"class":496,"line":821},[494,5206,5207],{"class":1653},"  \u002F\u002F ...\n",[494,5209,5210,5212],{"class":496,"line":1013},[494,5211,632],{"class":571},[494,5213,673],{"class":575},[472,5215,5217],{"id":5216},"client-provider","Client Provider",[408,5219,5220,5221,5224],{},"Wrap your root layout with ",[412,5222,5223],{},"EvlogProvider"," to enable client-side logging and transport:",[484,5226,5229],{"className":4169,"code":5227,"filename":5228,"language":4172,"meta":490,"style":490},"import { EvlogProvider } from 'evlog\u002Fnext\u002Fclient'\n\nexport default function Layout({ children }: { children: React.ReactNode }) {\n  return (\n    \u003Chtml lang=\"en\">\n      \u003Cbody>\n        \u003CEvlogProvider service=\"my-app\" transport={{ enabled: true }}>\n          {children}\n        \u003C\u002FEvlogProvider>\n      \u003C\u002Fbody>\n    \u003C\u002Fhtml>\n  )\n}\n","app\u002Flayout.tsx",[412,5230,5231,5251,5255,5295,5302,5325,5334,5367,5377,5386,5395,5404,5409],{"__ignoreMap":490},[494,5232,5233,5235,5237,5240,5242,5244,5246,5249],{"class":496,"line":497},[494,5234,568],{"class":567},[494,5236,572],{"class":571},[494,5238,5239],{"class":575}," EvlogProvider",[494,5241,579],{"class":571},[494,5243,582],{"class":567},[494,5245,585],{"class":571},[494,5247,5248],{"class":503},"evlog\u002Fnext\u002Fclient",[494,5250,591],{"class":571},[494,5252,5253],{"class":496,"line":594},[494,5254,598],{"emptyLinePlaceholder":597},[494,5256,5257,5259,5262,5264,5267,5270,5273,5276,5278,5280,5282,5285,5287,5290,5293],{"class":496,"line":601},[494,5258,604],{"class":567},[494,5260,5261],{"class":567}," default",[494,5263,1148],{"class":607},[494,5265,5266],{"class":638}," Layout",[494,5268,5269],{"class":571},"({",[494,5271,5272],{"class":1261}," children",[494,5274,5275],{"class":571}," }:",[494,5277,572],{"class":571},[494,5279,5272],{"class":650},[494,5281,654],{"class":571},[494,5283,5284],{"class":500}," React",[494,5286,760],{"class":571},[494,5288,5289],{"class":500},"ReactNode",[494,5291,5292],{"class":571}," })",[494,5294,738],{"class":571},[494,5296,5297,5299],{"class":496,"line":647},[494,5298,790],{"class":567},[494,5300,5301],{"class":650}," (\n",[494,5303,5304,5307,5310,5313,5315,5317,5320,5322],{"class":496,"line":668},[494,5305,5306],{"class":571},"    \u003C",[494,5308,5309],{"class":650},"html",[494,5311,5312],{"class":607}," lang",[494,5314,722],{"class":571},[494,5316,3976],{"class":571},[494,5318,5319],{"class":503},"en",[494,5321,3976],{"class":571},[494,5323,5324],{"class":571},">\n",[494,5326,5327,5330,5332],{"class":496,"line":787},[494,5328,5329],{"class":571},"      \u003C",[494,5331,3068],{"class":650},[494,5333,5324],{"class":571},[494,5335,5336,5339,5341,5343,5345,5347,5349,5351,5354,5357,5360,5362,5364],{"class":496,"line":821},[494,5337,5338],{"class":571},"        \u003C",[494,5340,5223],{"class":500},[494,5342,2472],{"class":607},[494,5344,722],{"class":571},[494,5346,3976],{"class":571},[494,5348,659],{"class":503},[494,5350,3976],{"class":571},[494,5352,5353],{"class":607}," transport",[494,5355,5356],{"class":571},"={{",[494,5358,5359],{"class":650}," enabled",[494,5361,654],{"class":571},[494,5363,1008],{"class":1007},[494,5365,5366],{"class":571}," }}>\n",[494,5368,5369,5372,5375],{"class":496,"line":1013},[494,5370,5371],{"class":571},"          {",[494,5373,5374],{"class":575},"children",[494,5376,1237],{"class":571},[494,5378,5379,5382,5384],{"class":496,"line":1258},[494,5380,5381],{"class":571},"        \u003C\u002F",[494,5383,5223],{"class":500},[494,5385,5324],{"class":571},[494,5387,5388,5391,5393],{"class":496,"line":1288},[494,5389,5390],{"class":571},"      \u003C\u002F",[494,5392,3068],{"class":650},[494,5394,5324],{"class":571},[494,5396,5397,5400,5402],{"class":496,"line":1341},[494,5398,5399],{"class":571},"    \u003C\u002F",[494,5401,5309],{"class":650},[494,5403,5324],{"class":571},[494,5405,5406],{"class":496,"line":1387},[494,5407,5408],{"class":650},"  )\n",[494,5410,5411],{"class":496,"line":1395},[494,5412,1237],{"class":571},[472,5414,66],{"id":5415},"client-logging",[408,5417,3464,5418,5421],{},[412,5419,5420],{},"log"," in any client component. Identity is preserved across all logs and transported to the server:",[484,5423,5426],{"className":4169,"code":5424,"filename":5425,"language":4172,"meta":490,"style":490},"'use client'\nimport { log, setIdentity, clearIdentity } from 'evlog\u002Fnext\u002Fclient'\n\nexport function Dashboard({ user }: { user: { id: string } }) {\n  \u002F\u002F Set identity once - all subsequent logs include it\n  useEffect(() => {\n    setIdentity({ userId: user.id })\n    return () => clearIdentity()\n  }, [user.id])\n\n  return (\n    \u003Cbutton onClick={() => log.info({ action: 'export_clicked', format: 'csv' })}>\n      Export\n    \u003C\u002Fbutton>\n  )\n}\n","app\u002Fcomponents\u002FDashboard.tsx",[412,5427,5428,5436,5464,5468,5503,5508,5521,5546,5559,5575,5579,5585,5642,5647,5655,5659],{"__ignoreMap":490},[494,5429,5430,5432,5434],{"class":496,"line":497},[494,5431,662],{"class":571},[494,5433,4181],{"class":503},[494,5435,591],{"class":571},[494,5437,5438,5440,5442,5444,5446,5449,5451,5454,5456,5458,5460,5462],{"class":496,"line":594},[494,5439,568],{"class":567},[494,5441,572],{"class":571},[494,5443,624],{"class":575},[494,5445,616],{"class":571},[494,5447,5448],{"class":575}," setIdentity",[494,5450,616],{"class":571},[494,5452,5453],{"class":575}," clearIdentity",[494,5455,579],{"class":571},[494,5457,582],{"class":567},[494,5459,585],{"class":571},[494,5461,5248],{"class":503},[494,5463,591],{"class":571},[494,5465,5466],{"class":496,"line":601},[494,5467,598],{"emptyLinePlaceholder":597},[494,5469,5470,5472,5474,5477,5479,5481,5483,5485,5487,5489,5491,5493,5495,5497,5499,5501],{"class":496,"line":647},[494,5471,604],{"class":567},[494,5473,1148],{"class":607},[494,5475,5476],{"class":638}," Dashboard",[494,5478,5269],{"class":571},[494,5480,2580],{"class":1261},[494,5482,5275],{"class":571},[494,5484,572],{"class":571},[494,5486,2580],{"class":650},[494,5488,654],{"class":571},[494,5490,572],{"class":571},[494,5492,2925],{"class":650},[494,5494,654],{"class":571},[494,5496,1275],{"class":500},[494,5498,579],{"class":571},[494,5500,5292],{"class":571},[494,5502,738],{"class":571},[494,5504,5505],{"class":496,"line":668},[494,5506,5507],{"class":1653},"  \u002F\u002F Set identity once - all subsequent logs include it\n",[494,5509,5510,5513,5515,5517,5519],{"class":496,"line":787},[494,5511,5512],{"class":638},"  useEffect",[494,5514,641],{"class":650},[494,5516,995],{"class":571},[494,5518,735],{"class":607},[494,5520,738],{"class":571},[494,5522,5523,5526,5528,5530,5533,5535,5537,5539,5542,5544],{"class":496,"line":821},[494,5524,5525],{"class":638},"    setIdentity",[494,5527,641],{"class":650},[494,5529,768],{"class":571},[494,5531,5532],{"class":650}," userId",[494,5534,654],{"class":571},[494,5536,2580],{"class":575},[494,5538,760],{"class":571},[494,5540,5541],{"class":575},"id",[494,5543,579],{"class":571},[494,5545,673],{"class":650},[494,5547,5548,5551,5553,5555,5557],{"class":496,"line":1013},[494,5549,5550],{"class":567},"    return",[494,5552,732],{"class":571},[494,5554,735],{"class":607},[494,5556,5453],{"class":638},[494,5558,752],{"class":650},[494,5560,5561,5564,5566,5568,5570,5572],{"class":496,"line":1258},[494,5562,5563],{"class":571},"  },",[494,5565,2109],{"class":650},[494,5567,2595],{"class":575},[494,5569,760],{"class":571},[494,5571,5541],{"class":575},[494,5573,5574],{"class":650},"])\n",[494,5576,5577],{"class":496,"line":1288},[494,5578,598],{"emptyLinePlaceholder":597},[494,5580,5581,5583],{"class":496,"line":1341},[494,5582,790],{"class":567},[494,5584,5301],{"class":650},[494,5586,5587,5589,5592,5595,5598,5600,5602,5604,5606,5608,5610,5612,5614,5616,5619,5621,5623,5626,5628,5630,5633,5635,5637,5639],{"class":496,"line":1387},[494,5588,5306],{"class":571},[494,5590,5591],{"class":650},"button",[494,5593,5594],{"class":607}," onClick",[494,5596,5597],{"class":571},"={()",[494,5599,735],{"class":607},[494,5601,624],{"class":575},[494,5603,760],{"class":571},[494,5605,848],{"class":638},[494,5607,641],{"class":575},[494,5609,768],{"class":571},[494,5611,771],{"class":650},[494,5613,654],{"class":571},[494,5615,585],{"class":571},[494,5617,5618],{"class":503},"export_clicked",[494,5620,662],{"class":571},[494,5622,616],{"class":571},[494,5624,5625],{"class":650}," format",[494,5627,654],{"class":571},[494,5629,585],{"class":571},[494,5631,5632],{"class":503},"csv",[494,5634,662],{"class":571},[494,5636,579],{"class":571},[494,5638,1390],{"class":575},[494,5640,5641],{"class":571},"}>\n",[494,5643,5644],{"class":496,"line":1395},[494,5645,5646],{"class":575},"      Export\n",[494,5648,5649,5651,5653],{"class":496,"line":1424},[494,5650,5399],{"class":571},[494,5652,5591],{"class":650},[494,5654,5324],{"class":571},[494,5656,5657],{"class":496,"line":1451},[494,5658,5408],{"class":650},[494,5660,5661],{"class":496,"line":1475},[494,5662,1237],{"class":571},[472,5664,5666],{"id":5665},"http-drain","HTTP drain",[408,5668,5669,5670,5672],{},"For advanced use cases, send structured ",[412,5671,2146],{}," events directly from the browser to a custom endpoint:",[484,5674,5677],{"className":557,"code":5675,"filename":5676,"language":560,"meta":490,"style":490},"import { createHttpLogDrain } from 'evlog\u002Fhttp'\n\nconst drain = createHttpLogDrain({\n  drain: { endpoint: '\u002Fapi\u002Fevlog\u002Fhttp-ingest' },\n  pipeline: { batch: { size: 10, intervalMs: 5000 } },\n})\n\ndrain(drainEvent)\nawait drain.flush()\n","lib\u002Fhttp-drain.ts",[412,5678,5679,5699,5703,5717,5739,5772,5778,5782,5789],{"__ignoreMap":490},[494,5680,5681,5683,5685,5688,5690,5692,5694,5697],{"class":496,"line":497},[494,5682,568],{"class":567},[494,5684,572],{"class":571},[494,5686,5687],{"class":575}," createHttpLogDrain",[494,5689,579],{"class":571},[494,5691,582],{"class":567},[494,5693,585],{"class":571},[494,5695,5696],{"class":503},"evlog\u002Fhttp",[494,5698,591],{"class":571},[494,5700,5701],{"class":496,"line":594},[494,5702,598],{"emptyLinePlaceholder":597},[494,5704,5705,5707,5709,5711,5713,5715],{"class":496,"line":601},[494,5706,1562],{"class":607},[494,5708,2200],{"class":575},[494,5710,722],{"class":571},[494,5712,5687],{"class":638},[494,5714,641],{"class":575},[494,5716,644],{"class":571},[494,5718,5719,5721,5723,5725,5728,5730,5732,5735,5737],{"class":496,"line":647},[494,5720,988],{"class":650},[494,5722,654],{"class":571},[494,5724,572],{"class":571},[494,5726,5727],{"class":650}," endpoint",[494,5729,654],{"class":571},[494,5731,585],{"class":571},[494,5733,5734],{"class":503},"\u002Fapi\u002Fevlog\u002Fhttp-ingest",[494,5736,662],{"class":571},[494,5738,1338],{"class":571},[494,5740,5741,5744,5746,5748,5750,5752,5754,5756,5758,5760,5762,5764,5766,5768,5770],{"class":496,"line":668},[494,5742,5743],{"class":650},"  pipeline",[494,5745,654],{"class":571},[494,5747,572],{"class":571},[494,5749,2155],{"class":650},[494,5751,654],{"class":571},[494,5753,572],{"class":571},[494,5755,2162],{"class":650},[494,5757,654],{"class":571},[494,5759,2347],{"class":2167},[494,5761,616],{"class":571},[494,5763,2173],{"class":650},[494,5765,654],{"class":571},[494,5767,2178],{"class":2167},[494,5769,579],{"class":571},[494,5771,1338],{"class":571},[494,5773,5774,5776],{"class":496,"line":787},[494,5775,632],{"class":571},[494,5777,673],{"class":575},[494,5779,5780],{"class":496,"line":821},[494,5781,598],{"emptyLinePlaceholder":597},[494,5783,5784,5786],{"class":496,"line":1013},[494,5785,890],{"class":638},[494,5787,5788],{"class":575},"(drainEvent)\n",[494,5790,5791,5794,5797,5799,5802],{"class":496,"line":1258},[494,5792,5793],{"class":567},"await",[494,5795,5796],{"class":575}," drain",[494,5798,760],{"class":571},[494,5800,5801],{"class":638},"flush",[494,5803,752],{"class":575},[408,5805,5806],{},"The server endpoint receives batched events:",[484,5808,5811],{"className":557,"code":5809,"filename":5810,"language":560,"meta":490,"style":490},"export async function POST(request: Request) {\n  const events = await request.json()\n  \u002F\u002F Forward to your drain pipeline, Axiom, etc.\n  return new Response(null, { status: 204 })\n}\n","app\u002Fapi\u002Fevlog\u002Fhttp-ingest\u002Froute.ts",[412,5812,5813,5836,5855,5860,5887],{"__ignoreMap":490},[494,5814,5815,5817,5819,5821,5824,5826,5828,5830,5832,5834],{"class":496,"line":497},[494,5816,604],{"class":567},[494,5818,1145],{"class":607},[494,5820,1148],{"class":607},[494,5822,5823],{"class":638}," POST",[494,5825,641],{"class":571},[494,5827,2850],{"class":1261},[494,5829,654],{"class":571},[494,5831,2855],{"class":500},[494,5833,1390],{"class":571},[494,5835,738],{"class":571},[494,5837,5838,5840,5843,5845,5847,5849,5851,5853],{"class":496,"line":594},[494,5839,743],{"class":607},[494,5841,5842],{"class":575}," events",[494,5844,635],{"class":571},[494,5846,1206],{"class":567},[494,5848,1465],{"class":575},[494,5850,760],{"class":571},[494,5852,798],{"class":638},[494,5854,752],{"class":650},[494,5856,5857],{"class":496,"line":601},[494,5858,5859],{"class":1653},"  \u002F\u002F Forward to your drain pipeline, Axiom, etc.\n",[494,5861,5862,5864,5867,5869,5871,5874,5876,5878,5880,5883,5885],{"class":496,"line":647},[494,5863,790],{"class":567},[494,5865,5866],{"class":571}," new",[494,5868,793],{"class":638},[494,5870,641],{"class":650},[494,5872,5873],{"class":571},"null,",[494,5875,572],{"class":571},[494,5877,2369],{"class":650},[494,5879,654],{"class":571},[494,5881,5882],{"class":2167}," 204",[494,5884,579],{"class":571},[494,5886,673],{"class":650},[494,5888,5889],{"class":496,"line":668},[494,5890,1237],{"class":571},[472,5892,5894],{"id":5893},"run-locally","Run Locally",[484,5896,5899],{"className":486,"code":5897,"filename":5898,"language":489,"meta":490,"style":490},"git clone https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog.git\ncd evlog\u002Fexamples\u002Fnextjs\npnpm install\npnpm run dev\n","Terminal",[412,5900,5901,5912,5920,5927],{"__ignoreMap":490},[494,5902,5903,5906,5909],{"class":496,"line":497},[494,5904,5905],{"class":500},"git",[494,5907,5908],{"class":503}," clone",[494,5910,5911],{"class":503}," https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog.git\n",[494,5913,5914,5917],{"class":496,"line":594},[494,5915,5916],{"class":638},"cd",[494,5918,5919],{"class":503}," evlog\u002Fexamples\u002Fnextjs\n",[494,5921,5922,5924],{"class":496,"line":601},[494,5923,488],{"class":500},[494,5925,5926],{"class":503}," install\n",[494,5928,5929,5931,5934],{"class":496,"line":647},[494,5930,488],{"class":500},[494,5932,5933],{"class":503}," run",[494,5935,5936],{"class":503}," dev\n",[408,5938,5939,5940,5944],{},"Open ",[461,5941,5942],{"href":5942,"rel":5943},"http:\u002F\u002Flocalhost:3000",[465]," to explore the example.",[5946,5947,5948],"card-group",{},[5949,5950,5954],"card",{"icon":5951,"title":5952,"to":5953},"i-simple-icons-github","Source Code","https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fnextjs","Browse the complete Next.js example source on GitHub.",[472,5956,5958],{"id":5957},"next-steps","Next Steps",[408,5960,5961,5962,5964],{},"Deepen your ",[857,5963,216],{}," integration:",[433,5966,5967,5972,5977,5982],{},[436,5968,5969,5971],{},[461,5970,51],{"href":52},": Design comprehensive events with context layering",[436,5973,5974,5976],{},[461,5975,300],{"href":305},": Send logs to Axiom, Sentry, PostHog, and more",[436,5978,5979,5981],{},[461,5980,175],{"href":176},": Control log volume with head and tail sampling",[436,5983,5984,5986,5987,1858,5989,3475,5991,5993],{},[461,5985,56],{"href":57},": Throw errors with ",[412,5988,3471],{},[412,5990,3474],{},[412,5992,3478],{}," fields",[5995,5996,5997],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":490,"searchDepth":594,"depth":594,"links":5999},[6000,6005,6011,6012,6013,6015,6018,6019,6020,6021,6022,6023,6024,6025,6026],{"id":474,"depth":594,"text":20,"children":6001},[6002,6003,6004],{"id":478,"depth":601,"text":479},{"id":553,"depth":601,"text":554},{"id":676,"depth":601,"text":677},{"id":828,"depth":594,"text":829,"children":6006},[6007,6008,6009,6010],{"id":893,"depth":601,"text":894},{"id":1020,"depth":601,"text":1021},{"id":1495,"depth":601,"text":1496},{"id":1893,"depth":601,"text":170},{"id":1970,"depth":594,"text":1971},{"id":2793,"depth":594,"text":51},{"id":3259,"depth":594,"text":6014},"Background work (log.fork)",{"id":3460,"depth":594,"text":3461,"children":6016},[6017],{"id":4152,"depth":601,"text":4153},{"id":4482,"depth":594,"text":170},{"id":4708,"depth":594,"text":4709},{"id":4945,"depth":594,"text":114},{"id":5060,"depth":594,"text":5061},{"id":5216,"depth":594,"text":5217},{"id":5415,"depth":594,"text":66},{"id":5665,"depth":594,"text":5666},{"id":5893,"depth":594,"text":5894},{"id":5957,"depth":594,"text":5958},"Wide events, structured errors, drain pipeline, tail sampling, route-based services, error handling, and client-side logging in Next.js applications.","md",[6030],{"label":5952,"icon":5951,"to":5953,"color":6031,"variant":6032},"neutral","subtle",{},{"title":216,"icon":219},{"title":216,"description":6027},"-61UzY5v1Ku5j5igK7o-bpDv1eJpRmnpzWB2aYkDU9Q",[6038,6040],{"title":211,"path":212,"stem":213,"description":6039,"icon":214,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.",{"title":221,"path":222,"stem":223,"description":6041,"icon":224,"children":-1},"Automatic wide events, structured errors, drain adapters, enrichers, and tail sampling in SvelteKit applications.",1778325964266]