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