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