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