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