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