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