[{"data":1,"prerenderedAt":2354},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-standalone":392,"-frameworks-standalone-surround":2349},[4,35,159,201,289,376],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,99,127],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Catalogs","\u002Flogging\u002Fcatalogs","2.logging\u002F4.catalogs","i-lucide-book-open",{"title":66,"path":67,"stem":68,"icon":69},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F5.client-logging","i-lucide-monitor",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":34},"AI SDK","i-simple-icons-vercel","\u002Flogging\u002Fai-sdk","2.logging\u002F6.ai-sdk",[76,79,84,89,94],{"title":41,"path":77,"stem":78,"icon":44},"\u002Flogging\u002Fai-sdk\u002Foverview","2.logging\u002F6.ai-sdk\u002F01.overview",{"title":80,"path":81,"stem":82,"icon":83},"Usage","\u002Flogging\u002Fai-sdk\u002Fusage","2.logging\u002F6.ai-sdk\u002F02.usage","i-lucide-code",{"title":85,"path":86,"stem":87,"icon":88},"Options","\u002Flogging\u002Fai-sdk\u002Foptions","2.logging\u002F6.ai-sdk\u002F03.options","i-lucide-sliders",{"title":90,"path":91,"stem":92,"icon":93},"Metadata","\u002Flogging\u002Fai-sdk\u002Fmetadata","2.logging\u002F6.ai-sdk\u002F04.metadata","i-lucide-database",{"title":95,"path":96,"stem":97,"icon":98},"Telemetry","\u002Flogging\u002Fai-sdk\u002Ftelemetry","2.logging\u002F6.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Flogging\u002Fbetter-auth","2.logging\u002F7.better-auth",[105,108,113,118,122],{"title":41,"path":106,"stem":107,"icon":44},"\u002Flogging\u002Fbetter-auth\u002Foverview","2.logging\u002F7.better-auth\u002F01.overview",{"title":109,"path":110,"stem":111,"icon":112},"Identify User","\u002Flogging\u002Fbetter-auth\u002Fidentify-user","2.logging\u002F7.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":114,"path":115,"stem":116,"icon":117},"Middleware","\u002Flogging\u002Fbetter-auth\u002Fmiddleware","2.logging\u002F7.better-auth\u002F03.middleware","i-lucide-shield",{"title":119,"path":120,"stem":121,"icon":69},"Client Sync","\u002Flogging\u002Fbetter-auth\u002Fclient-sync","2.logging\u002F7.better-auth\u002F04.client-sync",{"title":123,"path":124,"stem":125,"icon":126},"Performance","\u002Flogging\u002Fbetter-auth\u002Fperformance","2.logging\u002F7.better-auth\u002F05.performance","i-lucide-gauge",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":34},"Audit Logs","i-lucide-shield-check","\u002Flogging\u002Faudit","2.logging\u002F8.audit",[133,136,141,146,151,155],{"title":41,"path":134,"stem":135,"icon":44},"\u002Flogging\u002Faudit\u002Foverview","2.logging\u002F8.audit\u002F01.overview",{"title":137,"path":138,"stem":139,"icon":140},"Schema","\u002Flogging\u002Faudit\u002Fschema","2.logging\u002F8.audit\u002F02.schema","i-lucide-file-text",{"title":142,"path":143,"stem":144,"icon":145},"Recording","\u002Flogging\u002Faudit\u002Frecording","2.logging\u002F8.audit\u002F03.recording","i-lucide-pen-line",{"title":147,"path":148,"stem":149,"icon":150},"Drains","\u002Flogging\u002Faudit\u002Fpipeline","2.logging\u002F8.audit\u002F04.pipeline","i-lucide-link",{"title":152,"path":153,"stem":154,"icon":129},"Compliance","\u002Flogging\u002Faudit\u002Fcompliance","2.logging\u002F8.audit\u002F05.compliance",{"title":156,"path":157,"stem":158,"icon":64},"Recipes","\u002Flogging\u002Faudit\u002Frecipes","2.logging\u002F8.audit\u002F06.recipes",{"title":160,"path":161,"stem":162,"children":163,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[164,169,174,179,184,188,191,196],{"title":165,"path":166,"stem":167,"icon":168},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":170,"path":171,"stem":172,"icon":173},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":175,"path":176,"stem":177,"icon":178},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":180,"path":181,"stem":182,"icon":183},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":185,"path":186,"stem":187,"icon":129},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":123,"path":189,"stem":190,"icon":126},"\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance",{"title":192,"path":193,"stem":194,"icon":195},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":197,"path":198,"stem":199,"icon":200},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":202,"path":203,"stem":204,"children":205,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[206,210,215,220,225,230,235,240,245,250,255,260,265,270,274,279,284],{"title":41,"path":207,"stem":208,"icon":209},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":211,"path":212,"stem":213,"icon":214},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":216,"path":217,"stem":218,"icon":219},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":221,"path":222,"stem":223,"icon":224},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":226,"path":227,"stem":228,"icon":229},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":231,"path":232,"stem":233,"icon":234},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":236,"path":237,"stem":238,"icon":239},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":241,"path":242,"stem":243,"icon":244},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":246,"path":247,"stem":248,"icon":249},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":251,"path":252,"stem":253,"icon":254},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":256,"path":257,"stem":258,"icon":259},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":261,"path":262,"stem":263,"icon":264},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":266,"path":267,"stem":268,"icon":269},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":271,"path":272,"stem":273,"icon":183},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":275,"path":276,"stem":277,"icon":278},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":280,"path":281,"stem":282,"icon":283},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":285,"path":286,"stem":287,"icon":288},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":290,"path":291,"stem":292,"children":293,"page":34},"Adapters","\u002Fadapters","6.adapters",[294,297,337,352],{"title":41,"path":295,"stem":296,"icon":44},"\u002Fadapters\u002Foverview","6.adapters\u002F01.overview",{"title":298,"path":299,"stem":300,"children":301,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[302,307,312,317,322,327,332],{"title":303,"path":304,"stem":305,"icon":306},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":308,"path":309,"stem":310,"icon":311},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":313,"path":314,"stem":315,"icon":316},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":318,"path":319,"stem":320,"icon":321},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":323,"path":324,"stem":325,"icon":326},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":328,"path":329,"stem":330,"icon":331},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":333,"path":334,"stem":335,"icon":336},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":338,"path":339,"stem":340,"children":341,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[342,347],{"title":343,"path":344,"stem":345,"icon":346},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":348,"path":349,"stem":350,"icon":351},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":353,"path":354,"stem":355,"children":356,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[357,362,367,371],{"title":358,"path":359,"stem":360,"icon":361},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":363,"path":364,"stem":365,"icon":366},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":368,"path":369,"stem":370,"icon":83},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom",{"title":372,"path":373,"stem":374,"icon":375},"Toolkit","\u002Fadapters\u002Fbuilding-blocks\u002Ftoolkit","6.adapters\u002F04.building-blocks\u002F04.toolkit","i-lucide-blocks",{"title":377,"path":378,"stem":379,"children":380,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[381,384,388],{"title":41,"path":382,"stem":383,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":385,"path":386,"stem":387,"icon":288},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":389,"path":390,"stem":391,"icon":83},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":393,"title":394,"body":395,"description":2342,"extension":2343,"links":2344,"meta":2345,"navigation":2346,"path":272,"seo":2347,"stem":273,"__hash__":2348},"docs\u002F4.frameworks\u002F13.standalone.md","Standalone TypeScript",{"type":396,"value":397,"toc":2330},"minimark",[398,411,424,467,471,476,547,551,1001,1008,1030,1034,1037,1045,1149,1157,1290,1297,1300,1303,1627,1685,1689,1696,2036,2039,2049,2053,2058,2275,2280,2290,2294,2326],[399,400,401,402,406,407,410],"p",{},"For scripts, CLI tools, queue workers, cron jobs, and any TypeScript process that doesn't use a web framework, evlog provides ",[403,404,405],"code",{},"createLogger"," and ",[403,408,409],{},"createRequestLogger"," from the core package.",[412,413,415,416,419,420,423],"callout",{"color":414,"icon":366},"neutral","For scripts, queue workers, cron, and CLIs, this page is the reference. On Cloudflare Workers, prefer ",[417,418,266],"a",{"href":267}," (",[403,421,422],{},"createWorkersLogger",").",[425,426,429,432,454],"prompt",{":actions":427,"description":428,"icon":183},"[\"copy\",\"cursor\",\"windsurf\"]","Set up evlog in my TypeScript project",[399,430,431],{},"Set up evlog in my TypeScript project for scripts, workers, or CLI tools.",[433,434,435,439,442,445,448,451],"ul",{},[436,437,438],"li",{},"Install evlog: pnpm add evlog",[436,440,441],{},"Import initLogger and createLogger (or createRequestLogger) from 'evlog'",[436,443,444],{},"Call initLogger({ env: { service: 'my-script' } }) once at startup",[436,446,447],{},"Create a logger per logical operation with createLogger({ jobId, source })",[436,449,450],{},"Use log.set() to accumulate context as the operation progresses",[436,452,453],{},"Call log.emit() manually when the operation completes",[399,455,456,457,462,463],{},"Docs: ",[417,458,459],{"href":459,"rel":460},"https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fstandalone",[461],"nofollow","\nAdapters: ",[417,464,465],{"href":465,"rel":466},"https:\u002F\u002Fwww.evlog.dev\u002Fadapters",[461],[468,469,20],"h2",{"id":470},"quick-start",[472,473,475],"h3",{"id":474},"_1-install","1. Install",[477,478,479,504,518,532],"code-group",{},[480,481,487],"pre",{"className":482,"code":483,"filename":484,"language":485,"meta":486,"style":486},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[403,488,489],{"__ignoreMap":486},[490,491,494,497,501],"span",{"class":492,"line":493},"line",1,[490,495,484],{"class":496},"sBMFI",[490,498,500],{"class":499},"sfazB"," add",[490,502,503],{"class":499}," evlog\n",[480,505,508],{"className":482,"code":506,"filename":507,"language":485,"meta":486,"style":486},"bun add evlog\n","bun",[403,509,510],{"__ignoreMap":486},[490,511,512,514,516],{"class":492,"line":493},[490,513,507],{"class":496},[490,515,500],{"class":499},[490,517,503],{"class":499},[480,519,522],{"className":482,"code":520,"filename":521,"language":485,"meta":486,"style":486},"yarn add evlog\n","yarn",[403,523,524],{"__ignoreMap":486},[490,525,526,528,530],{"class":492,"line":493},[490,527,521],{"class":496},[490,529,500],{"class":499},[490,531,503],{"class":499},[480,533,536],{"className":482,"code":534,"filename":535,"language":485,"meta":486,"style":486},"npm install evlog\n","npm",[403,537,538],{"__ignoreMap":486},[490,539,540,542,545],{"class":492,"line":493},[490,541,535],{"class":496},[490,543,544],{"class":499}," install",[490,546,503],{"class":499},[472,548,550],{"id":549},"_2-initialize-and-create-loggers","2. Initialize and create loggers",[480,552,557],{"className":553,"code":554,"filename":555,"language":556,"meta":486,"style":486},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import type { DrainContext } from 'evlog'\nimport { initLogger, log, createLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({ batch: { size: 10 } })\nconst drain = pipeline(createAxiomDrain())\n\ninitLogger({\n  env: { service: 'my-script', environment: 'production' },\n  drain,\n})\n\n\u002F\u002F Every log is automatically drained\nlog.info({ action: 'sync_started' })\n\nconst syncLog = createLogger({ jobId: 'sync-001', source: 'postgres', target: 's3' })\nsyncLog.set({ recordsSynced: 150 })\nsyncLog.emit() \u002F\u002F drained automatically\n\n\u002F\u002F Flush remaining events before exit\nawait drain.flush()\n","scripts\u002Fsync-job.ts","typescript",[403,558,559,591,622,643,664,671,727,748,753,764,804,813,821,826,833,865,870,930,957,973,978,984],{"__ignoreMap":486},[490,560,561,565,568,572,576,579,582,585,588],{"class":492,"line":493},[490,562,564],{"class":563},"s7zQu","import",[490,566,567],{"class":563}," type",[490,569,571],{"class":570},"sMK4o"," {",[490,573,575],{"class":574},"sTEyZ"," DrainContext",[490,577,578],{"class":570}," }",[490,580,581],{"class":563}," from",[490,583,584],{"class":570}," '",[490,586,587],{"class":499},"evlog",[490,589,590],{"class":570},"'\n",[490,592,594,596,598,601,604,607,609,612,614,616,618,620],{"class":492,"line":593},2,[490,595,564],{"class":563},[490,597,571],{"class":570},[490,599,600],{"class":574}," initLogger",[490,602,603],{"class":570},",",[490,605,606],{"class":574}," log",[490,608,603],{"class":570},[490,610,611],{"class":574}," createLogger",[490,613,578],{"class":570},[490,615,581],{"class":563},[490,617,584],{"class":570},[490,619,587],{"class":499},[490,621,590],{"class":570},[490,623,625,627,629,632,634,636,638,641],{"class":492,"line":624},3,[490,626,564],{"class":563},[490,628,571],{"class":570},[490,630,631],{"class":574}," createAxiomDrain",[490,633,578],{"class":570},[490,635,581],{"class":563},[490,637,584],{"class":570},[490,639,640],{"class":499},"evlog\u002Faxiom",[490,642,590],{"class":570},[490,644,646,648,650,653,655,657,659,662],{"class":492,"line":645},4,[490,647,564],{"class":563},[490,649,571],{"class":570},[490,651,652],{"class":574}," createDrainPipeline",[490,654,578],{"class":570},[490,656,581],{"class":563},[490,658,584],{"class":570},[490,660,661],{"class":499},"evlog\u002Fpipeline",[490,663,590],{"class":570},[490,665,667],{"class":492,"line":666},5,[490,668,670],{"emptyLinePlaceholder":669},true,"\n",[490,672,674,678,681,684,687,690,693,696,699,702,706,709,711,714,716,720,722,724],{"class":492,"line":673},6,[490,675,677],{"class":676},"spNyl","const",[490,679,680],{"class":574}," pipeline ",[490,682,683],{"class":570},"=",[490,685,652],{"class":686},"s2Zo4",[490,688,689],{"class":570},"\u003C",[490,691,692],{"class":496},"DrainContext",[490,694,695],{"class":570},">",[490,697,698],{"class":574},"(",[490,700,701],{"class":570},"{",[490,703,705],{"class":704},"swJcz"," batch",[490,707,708],{"class":570},":",[490,710,571],{"class":570},[490,712,713],{"class":704}," size",[490,715,708],{"class":570},[490,717,719],{"class":718},"sbssI"," 10",[490,721,578],{"class":570},[490,723,578],{"class":570},[490,725,726],{"class":574},")\n",[490,728,730,732,735,737,740,742,745],{"class":492,"line":729},7,[490,731,677],{"class":676},[490,733,734],{"class":574}," drain ",[490,736,683],{"class":570},[490,738,739],{"class":686}," pipeline",[490,741,698],{"class":574},[490,743,744],{"class":686},"createAxiomDrain",[490,746,747],{"class":574},"())\n",[490,749,751],{"class":492,"line":750},8,[490,752,670],{"emptyLinePlaceholder":669},[490,754,756,759,761],{"class":492,"line":755},9,[490,757,758],{"class":686},"initLogger",[490,760,698],{"class":574},[490,762,763],{"class":570},"{\n",[490,765,767,770,772,774,777,779,781,784,787,789,792,794,796,799,801],{"class":492,"line":766},10,[490,768,769],{"class":704},"  env",[490,771,708],{"class":570},[490,773,571],{"class":570},[490,775,776],{"class":704}," service",[490,778,708],{"class":570},[490,780,584],{"class":570},[490,782,783],{"class":499},"my-script",[490,785,786],{"class":570},"'",[490,788,603],{"class":570},[490,790,791],{"class":704}," environment",[490,793,708],{"class":570},[490,795,584],{"class":570},[490,797,798],{"class":499},"production",[490,800,786],{"class":570},[490,802,803],{"class":570}," },\n",[490,805,807,810],{"class":492,"line":806},11,[490,808,809],{"class":574},"  drain",[490,811,812],{"class":570},",\n",[490,814,816,819],{"class":492,"line":815},12,[490,817,818],{"class":570},"}",[490,820,726],{"class":574},[490,822,824],{"class":492,"line":823},13,[490,825,670],{"emptyLinePlaceholder":669},[490,827,829],{"class":492,"line":828},14,[490,830,832],{"class":831},"sHwdD","\u002F\u002F Every log is automatically drained\n",[490,834,836,839,842,845,847,849,852,854,856,859,861,863],{"class":492,"line":835},15,[490,837,838],{"class":574},"log",[490,840,841],{"class":570},".",[490,843,844],{"class":686},"info",[490,846,698],{"class":574},[490,848,701],{"class":570},[490,850,851],{"class":704}," action",[490,853,708],{"class":570},[490,855,584],{"class":570},[490,857,858],{"class":499},"sync_started",[490,860,786],{"class":570},[490,862,578],{"class":570},[490,864,726],{"class":574},[490,866,868],{"class":492,"line":867},16,[490,869,670],{"emptyLinePlaceholder":669},[490,871,873,875,878,880,882,884,886,889,891,893,896,898,900,903,905,907,910,912,914,917,919,921,924,926,928],{"class":492,"line":872},17,[490,874,677],{"class":676},[490,876,877],{"class":574}," syncLog ",[490,879,683],{"class":570},[490,881,611],{"class":686},[490,883,698],{"class":574},[490,885,701],{"class":570},[490,887,888],{"class":704}," jobId",[490,890,708],{"class":570},[490,892,584],{"class":570},[490,894,895],{"class":499},"sync-001",[490,897,786],{"class":570},[490,899,603],{"class":570},[490,901,902],{"class":704}," source",[490,904,708],{"class":570},[490,906,584],{"class":570},[490,908,909],{"class":499},"postgres",[490,911,786],{"class":570},[490,913,603],{"class":570},[490,915,916],{"class":704}," target",[490,918,708],{"class":570},[490,920,584],{"class":570},[490,922,923],{"class":499},"s3",[490,925,786],{"class":570},[490,927,578],{"class":570},[490,929,726],{"class":574},[490,931,933,936,938,941,943,945,948,950,953,955],{"class":492,"line":932},18,[490,934,935],{"class":574},"syncLog",[490,937,841],{"class":570},[490,939,940],{"class":686},"set",[490,942,698],{"class":574},[490,944,701],{"class":570},[490,946,947],{"class":704}," recordsSynced",[490,949,708],{"class":570},[490,951,952],{"class":718}," 150",[490,954,578],{"class":570},[490,956,726],{"class":574},[490,958,960,962,964,967,970],{"class":492,"line":959},19,[490,961,935],{"class":574},[490,963,841],{"class":570},[490,965,966],{"class":686},"emit",[490,968,969],{"class":574},"() ",[490,971,972],{"class":831},"\u002F\u002F drained automatically\n",[490,974,976],{"class":492,"line":975},20,[490,977,670],{"emptyLinePlaceholder":669},[490,979,981],{"class":492,"line":980},21,[490,982,983],{"class":831},"\u002F\u002F Flush remaining events before exit\n",[490,985,987,990,993,995,998],{"class":492,"line":986},22,[490,988,989],{"class":563},"await",[490,991,992],{"class":574}," drain",[490,994,841],{"class":570},[490,996,997],{"class":686},"flush",[490,999,1000],{"class":574},"()\n",[412,1002,1003,1004,1007],{"color":844,"icon":13},"Always call ",[403,1005,1006],{},"drain.flush()"," before the process exits to ensure all buffered events are sent.",[412,1009,1010,1014,1015,1021,1022,1025,1026,1029],{"color":844,"icon":195},[1011,1012,1013],"strong",{},"Using vite-node?"," The ",[417,1016,1017,1020],{"href":193},[403,1018,1019],{},"evlog\u002Fvite"," plugin"," replaces the ",[403,1023,1024],{},"initLogger()"," call with compile-time auto-initialization, strips ",[403,1027,1028],{},"log.debug()"," from production builds, and injects source locations.",[468,1031,1033],{"id":1032},"createlogger-vs-createrequestlogger","createLogger vs createRequestLogger",[399,1035,1036],{},"evlog provides two manual logger constructors:",[399,1038,1039,1044],{},[1011,1040,1041],{},[403,1042,1043],{},"createLogger(context)"," - For non-HTTP contexts (scripts, CLI, queues):",[480,1046,1049],{"className":553,"code":1047,"filename":1048,"language":556,"meta":486,"style":486},"import { createLogger } from 'evlog'\n\nconst log = createLogger({ jobId: 'migrate-001', source: 'postgres' })\nlog.set({ recordsProcessed: 500 })\nlog.emit()\n","scripts\u002Fjob.ts",[403,1050,1051,1069,1073,1115,1139],{"__ignoreMap":486},[490,1052,1053,1055,1057,1059,1061,1063,1065,1067],{"class":492,"line":493},[490,1054,564],{"class":563},[490,1056,571],{"class":570},[490,1058,611],{"class":574},[490,1060,578],{"class":570},[490,1062,581],{"class":563},[490,1064,584],{"class":570},[490,1066,587],{"class":499},[490,1068,590],{"class":570},[490,1070,1071],{"class":492,"line":593},[490,1072,670],{"emptyLinePlaceholder":669},[490,1074,1075,1077,1080,1082,1084,1086,1088,1090,1092,1094,1097,1099,1101,1103,1105,1107,1109,1111,1113],{"class":492,"line":624},[490,1076,677],{"class":676},[490,1078,1079],{"class":574}," log ",[490,1081,683],{"class":570},[490,1083,611],{"class":686},[490,1085,698],{"class":574},[490,1087,701],{"class":570},[490,1089,888],{"class":704},[490,1091,708],{"class":570},[490,1093,584],{"class":570},[490,1095,1096],{"class":499},"migrate-001",[490,1098,786],{"class":570},[490,1100,603],{"class":570},[490,1102,902],{"class":704},[490,1104,708],{"class":570},[490,1106,584],{"class":570},[490,1108,909],{"class":499},[490,1110,786],{"class":570},[490,1112,578],{"class":570},[490,1114,726],{"class":574},[490,1116,1117,1119,1121,1123,1125,1127,1130,1132,1135,1137],{"class":492,"line":645},[490,1118,838],{"class":574},[490,1120,841],{"class":570},[490,1122,940],{"class":686},[490,1124,698],{"class":574},[490,1126,701],{"class":570},[490,1128,1129],{"class":704}," recordsProcessed",[490,1131,708],{"class":570},[490,1133,1134],{"class":718}," 500",[490,1136,578],{"class":570},[490,1138,726],{"class":574},[490,1140,1141,1143,1145,1147],{"class":492,"line":666},[490,1142,838],{"class":574},[490,1144,841],{"class":570},[490,1146,966],{"class":686},[490,1148,1000],{"class":574},[399,1150,1151,1156],{},[1011,1152,1153],{},[403,1154,1155],{},"createRequestLogger(requestMeta)"," - For HTTP-like contexts where you want method\u002Fpath\u002Fstatus tracking:",[480,1158,1161],{"className":553,"code":1159,"filename":1160,"language":556,"meta":486,"style":486},"import { createRequestLogger } from 'evlog'\n\nconst log = createRequestLogger({\n  method: 'POST',\n  path: '\u002Fwebhook\u002Fstripe',\n})\nlog.set({ event: 'invoice.paid', customerId: 'cus_123' })\nlog.emit()\n","scripts\u002Fwebhook-handler.ts",[403,1162,1163,1182,1186,1200,1216,1232,1238,1280],{"__ignoreMap":486},[490,1164,1165,1167,1169,1172,1174,1176,1178,1180],{"class":492,"line":493},[490,1166,564],{"class":563},[490,1168,571],{"class":570},[490,1170,1171],{"class":574}," createRequestLogger",[490,1173,578],{"class":570},[490,1175,581],{"class":563},[490,1177,584],{"class":570},[490,1179,587],{"class":499},[490,1181,590],{"class":570},[490,1183,1184],{"class":492,"line":593},[490,1185,670],{"emptyLinePlaceholder":669},[490,1187,1188,1190,1192,1194,1196,1198],{"class":492,"line":624},[490,1189,677],{"class":676},[490,1191,1079],{"class":574},[490,1193,683],{"class":570},[490,1195,1171],{"class":686},[490,1197,698],{"class":574},[490,1199,763],{"class":570},[490,1201,1202,1205,1207,1209,1212,1214],{"class":492,"line":645},[490,1203,1204],{"class":704},"  method",[490,1206,708],{"class":570},[490,1208,584],{"class":570},[490,1210,1211],{"class":499},"POST",[490,1213,786],{"class":570},[490,1215,812],{"class":570},[490,1217,1218,1221,1223,1225,1228,1230],{"class":492,"line":666},[490,1219,1220],{"class":704},"  path",[490,1222,708],{"class":570},[490,1224,584],{"class":570},[490,1226,1227],{"class":499},"\u002Fwebhook\u002Fstripe",[490,1229,786],{"class":570},[490,1231,812],{"class":570},[490,1233,1234,1236],{"class":492,"line":673},[490,1235,818],{"class":570},[490,1237,726],{"class":574},[490,1239,1240,1242,1244,1246,1248,1250,1253,1255,1257,1260,1262,1264,1267,1269,1271,1274,1276,1278],{"class":492,"line":729},[490,1241,838],{"class":574},[490,1243,841],{"class":570},[490,1245,940],{"class":686},[490,1247,698],{"class":574},[490,1249,701],{"class":570},[490,1251,1252],{"class":704}," event",[490,1254,708],{"class":570},[490,1256,584],{"class":570},[490,1258,1259],{"class":499},"invoice.paid",[490,1261,786],{"class":570},[490,1263,603],{"class":570},[490,1265,1266],{"class":704}," customerId",[490,1268,708],{"class":570},[490,1270,584],{"class":570},[490,1272,1273],{"class":499},"cus_123",[490,1275,786],{"class":570},[490,1277,578],{"class":570},[490,1279,726],{"class":574},[490,1281,1282,1284,1286,1288],{"class":492,"line":750},[490,1283,838],{"class":574},[490,1285,841],{"class":570},[490,1287,966],{"class":686},[490,1289,1000],{"class":574},[399,1291,1292,1293,1296],{},"Both require manual ",[403,1294,1295],{},"log.emit()"," calls since there is no automatic lifecycle to hook into.",[468,1298,51],{"id":1299},"wide-events",[399,1301,1302],{},"Build up context progressively, then emit:",[480,1304,1307],{"className":553,"code":1305,"filename":1306,"language":556,"meta":486,"style":486},"import { initLogger, createLogger } from 'evlog'\n\ninitLogger({\n  env: { service: 'migrate' },\n})\n\nconst log = createLogger({ task: 'user-migration' })\n\nconst users = await db.query('SELECT * FROM legacy_users')\nlog.set({ found: users.length })\n\nlet migrated = 0\nfor (const user of users) {\n  await newDb.upsert({ id: user.id, email: user.email, plan: user.plan })\n  migrated++\n}\n\nlog.set({ migrated, status: 'complete' })\nlog.emit()\n","scripts\u002Fmigrate-users.ts",[403,1308,1309,1331,1335,1343,1364,1370,1374,1404,1408,1439,1468,1472,1485,1505,1567,1575,1580,1584,1617],{"__ignoreMap":486},[490,1310,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329],{"class":492,"line":493},[490,1312,564],{"class":563},[490,1314,571],{"class":570},[490,1316,600],{"class":574},[490,1318,603],{"class":570},[490,1320,611],{"class":574},[490,1322,578],{"class":570},[490,1324,581],{"class":563},[490,1326,584],{"class":570},[490,1328,587],{"class":499},[490,1330,590],{"class":570},[490,1332,1333],{"class":492,"line":593},[490,1334,670],{"emptyLinePlaceholder":669},[490,1336,1337,1339,1341],{"class":492,"line":624},[490,1338,758],{"class":686},[490,1340,698],{"class":574},[490,1342,763],{"class":570},[490,1344,1345,1347,1349,1351,1353,1355,1357,1360,1362],{"class":492,"line":645},[490,1346,769],{"class":704},[490,1348,708],{"class":570},[490,1350,571],{"class":570},[490,1352,776],{"class":704},[490,1354,708],{"class":570},[490,1356,584],{"class":570},[490,1358,1359],{"class":499},"migrate",[490,1361,786],{"class":570},[490,1363,803],{"class":570},[490,1365,1366,1368],{"class":492,"line":666},[490,1367,818],{"class":570},[490,1369,726],{"class":574},[490,1371,1372],{"class":492,"line":673},[490,1373,670],{"emptyLinePlaceholder":669},[490,1375,1376,1378,1380,1382,1384,1386,1388,1391,1393,1395,1398,1400,1402],{"class":492,"line":729},[490,1377,677],{"class":676},[490,1379,1079],{"class":574},[490,1381,683],{"class":570},[490,1383,611],{"class":686},[490,1385,698],{"class":574},[490,1387,701],{"class":570},[490,1389,1390],{"class":704}," task",[490,1392,708],{"class":570},[490,1394,584],{"class":570},[490,1396,1397],{"class":499},"user-migration",[490,1399,786],{"class":570},[490,1401,578],{"class":570},[490,1403,726],{"class":574},[490,1405,1406],{"class":492,"line":750},[490,1407,670],{"emptyLinePlaceholder":669},[490,1409,1410,1412,1415,1417,1420,1423,1425,1428,1430,1432,1435,1437],{"class":492,"line":755},[490,1411,677],{"class":676},[490,1413,1414],{"class":574}," users ",[490,1416,683],{"class":570},[490,1418,1419],{"class":563}," await",[490,1421,1422],{"class":574}," db",[490,1424,841],{"class":570},[490,1426,1427],{"class":686},"query",[490,1429,698],{"class":574},[490,1431,786],{"class":570},[490,1433,1434],{"class":499},"SELECT * FROM legacy_users",[490,1436,786],{"class":570},[490,1438,726],{"class":574},[490,1440,1441,1443,1445,1447,1449,1451,1454,1456,1459,1461,1464,1466],{"class":492,"line":766},[490,1442,838],{"class":574},[490,1444,841],{"class":570},[490,1446,940],{"class":686},[490,1448,698],{"class":574},[490,1450,701],{"class":570},[490,1452,1453],{"class":704}," found",[490,1455,708],{"class":570},[490,1457,1458],{"class":574}," users",[490,1460,841],{"class":570},[490,1462,1463],{"class":574},"length ",[490,1465,818],{"class":570},[490,1467,726],{"class":574},[490,1469,1470],{"class":492,"line":806},[490,1471,670],{"emptyLinePlaceholder":669},[490,1473,1474,1477,1480,1482],{"class":492,"line":815},[490,1475,1476],{"class":676},"let",[490,1478,1479],{"class":574}," migrated ",[490,1481,683],{"class":570},[490,1483,1484],{"class":718}," 0\n",[490,1486,1487,1490,1492,1494,1497,1500,1503],{"class":492,"line":823},[490,1488,1489],{"class":563},"for",[490,1491,419],{"class":574},[490,1493,677],{"class":676},[490,1495,1496],{"class":574}," user ",[490,1498,1499],{"class":570},"of",[490,1501,1502],{"class":574}," users) ",[490,1504,763],{"class":570},[490,1506,1507,1510,1513,1515,1518,1520,1522,1525,1527,1530,1532,1535,1537,1540,1542,1544,1546,1549,1551,1554,1556,1558,1560,1563,1565],{"class":492,"line":828},[490,1508,1509],{"class":563},"  await",[490,1511,1512],{"class":574}," newDb",[490,1514,841],{"class":570},[490,1516,1517],{"class":686},"upsert",[490,1519,698],{"class":704},[490,1521,701],{"class":570},[490,1523,1524],{"class":704}," id",[490,1526,708],{"class":570},[490,1528,1529],{"class":574}," user",[490,1531,841],{"class":570},[490,1533,1534],{"class":574},"id",[490,1536,603],{"class":570},[490,1538,1539],{"class":704}," email",[490,1541,708],{"class":570},[490,1543,1529],{"class":574},[490,1545,841],{"class":570},[490,1547,1548],{"class":574},"email",[490,1550,603],{"class":570},[490,1552,1553],{"class":704}," plan",[490,1555,708],{"class":570},[490,1557,1529],{"class":574},[490,1559,841],{"class":570},[490,1561,1562],{"class":574},"plan",[490,1564,578],{"class":570},[490,1566,726],{"class":704},[490,1568,1569,1572],{"class":492,"line":835},[490,1570,1571],{"class":574},"  migrated",[490,1573,1574],{"class":570},"++\n",[490,1576,1577],{"class":492,"line":867},[490,1578,1579],{"class":570},"}\n",[490,1581,1582],{"class":492,"line":872},[490,1583,670],{"emptyLinePlaceholder":669},[490,1585,1586,1588,1590,1592,1594,1596,1599,1601,1604,1606,1608,1611,1613,1615],{"class":492,"line":932},[490,1587,838],{"class":574},[490,1589,841],{"class":570},[490,1591,940],{"class":686},[490,1593,698],{"class":574},[490,1595,701],{"class":570},[490,1597,1598],{"class":574}," migrated",[490,1600,603],{"class":570},[490,1602,1603],{"class":704}," status",[490,1605,708],{"class":570},[490,1607,584],{"class":570},[490,1609,1610],{"class":499},"complete",[490,1612,786],{"class":570},[490,1614,578],{"class":570},[490,1616,726],{"class":574},[490,1618,1619,1621,1623,1625],{"class":492,"line":959},[490,1620,838],{"class":574},[490,1622,841],{"class":570},[490,1624,966],{"class":686},[490,1626,1000],{"class":574},[480,1628,1631],{"className":482,"code":1629,"filename":1630,"language":485,"meta":486,"style":486},"14:58:15 INFO [migrate] user-migration\n  ├─ migrated: 1250\n  ├─ found: 1250\n  ├─ status: complete\n  └─ task: user-migration\n","Terminal output",[403,1632,1633,1644,1655,1664,1674],{"__ignoreMap":486},[490,1634,1635,1638,1641],{"class":492,"line":493},[490,1636,1637],{"class":496},"14:58:15",[490,1639,1640],{"class":499}," INFO",[490,1642,1643],{"class":574}," [migrate] user-migration\n",[490,1645,1646,1649,1652],{"class":492,"line":593},[490,1647,1648],{"class":496},"  ├─",[490,1650,1651],{"class":499}," migrated:",[490,1653,1654],{"class":718}," 1250\n",[490,1656,1657,1659,1662],{"class":492,"line":624},[490,1658,1648],{"class":496},[490,1660,1661],{"class":499}," found:",[490,1663,1654],{"class":718},[490,1665,1666,1668,1671],{"class":492,"line":645},[490,1667,1648],{"class":496},[490,1669,1670],{"class":499}," status:",[490,1672,1673],{"class":499}," complete\n",[490,1675,1676,1679,1682],{"class":492,"line":666},[490,1677,1678],{"class":496},"  └─",[490,1680,1681],{"class":499}," task:",[490,1683,1684],{"class":499}," user-migration\n",[468,1686,1688],{"id":1687},"error-handling","Error Handling",[399,1690,1691,1692,1695],{},"Use ",[403,1693,1694],{},"createError"," for structured errors:",[480,1697,1699],{"className":553,"code":1698,"filename":555,"language":556,"meta":486,"style":486},"import { createError, parseError } from 'evlog'\n\ntry {\n  const result = await externalApi.sync()\n  if (!result.ok) {\n    throw createError({\n      message: 'Sync failed',\n      why: `API returned ${result.status}`,\n      fix: 'Check the API status page and retry',\n    })\n  }\n} catch (error) {\n  log.error(error instanceof Error ? error : new Error(String(error)))\n  log.emit()\n\n  const { message, why, fix } = parseError(error)\n  console.error(`${message}\\nWhy: ${why}\\nFix: ${fix}`)\n  process.exit(1)\n}\n",[403,1700,1701,1725,1729,1737,1760,1783,1794,1810,1838,1854,1861,1866,1878,1924,1934,1938,1969,2015,2032],{"__ignoreMap":486},[490,1702,1703,1705,1707,1710,1712,1715,1717,1719,1721,1723],{"class":492,"line":493},[490,1704,564],{"class":563},[490,1706,571],{"class":570},[490,1708,1709],{"class":574}," createError",[490,1711,603],{"class":570},[490,1713,1714],{"class":574}," parseError",[490,1716,578],{"class":570},[490,1718,581],{"class":563},[490,1720,584],{"class":570},[490,1722,587],{"class":499},[490,1724,590],{"class":570},[490,1726,1727],{"class":492,"line":593},[490,1728,670],{"emptyLinePlaceholder":669},[490,1730,1731,1734],{"class":492,"line":624},[490,1732,1733],{"class":563},"try",[490,1735,1736],{"class":570}," {\n",[490,1738,1739,1742,1745,1748,1750,1753,1755,1758],{"class":492,"line":645},[490,1740,1741],{"class":676},"  const",[490,1743,1744],{"class":574}," result",[490,1746,1747],{"class":570}," =",[490,1749,1419],{"class":563},[490,1751,1752],{"class":574}," externalApi",[490,1754,841],{"class":570},[490,1756,1757],{"class":686},"sync",[490,1759,1000],{"class":704},[490,1761,1762,1765,1767,1770,1773,1775,1778,1781],{"class":492,"line":666},[490,1763,1764],{"class":563},"  if",[490,1766,419],{"class":704},[490,1768,1769],{"class":570},"!",[490,1771,1772],{"class":574},"result",[490,1774,841],{"class":570},[490,1776,1777],{"class":574},"ok",[490,1779,1780],{"class":704},") ",[490,1782,763],{"class":570},[490,1784,1785,1788,1790,1792],{"class":492,"line":673},[490,1786,1787],{"class":563},"    throw",[490,1789,1709],{"class":686},[490,1791,698],{"class":704},[490,1793,763],{"class":570},[490,1795,1796,1799,1801,1803,1806,1808],{"class":492,"line":729},[490,1797,1798],{"class":704},"      message",[490,1800,708],{"class":570},[490,1802,584],{"class":570},[490,1804,1805],{"class":499},"Sync failed",[490,1807,786],{"class":570},[490,1809,812],{"class":570},[490,1811,1812,1815,1817,1820,1823,1826,1828,1830,1833,1836],{"class":492,"line":750},[490,1813,1814],{"class":704},"      why",[490,1816,708],{"class":570},[490,1818,1819],{"class":570}," `",[490,1821,1822],{"class":499},"API returned ",[490,1824,1825],{"class":570},"${",[490,1827,1772],{"class":574},[490,1829,841],{"class":570},[490,1831,1832],{"class":574},"status",[490,1834,1835],{"class":570},"}`",[490,1837,812],{"class":570},[490,1839,1840,1843,1845,1847,1850,1852],{"class":492,"line":755},[490,1841,1842],{"class":704},"      fix",[490,1844,708],{"class":570},[490,1846,584],{"class":570},[490,1848,1849],{"class":499},"Check the API status page and retry",[490,1851,786],{"class":570},[490,1853,812],{"class":570},[490,1855,1856,1859],{"class":492,"line":766},[490,1857,1858],{"class":570},"    }",[490,1860,726],{"class":704},[490,1862,1863],{"class":492,"line":806},[490,1864,1865],{"class":570},"  }\n",[490,1867,1868,1870,1873,1876],{"class":492,"line":815},[490,1869,818],{"class":570},[490,1871,1872],{"class":563}," catch",[490,1874,1875],{"class":574}," (error) ",[490,1877,763],{"class":570},[490,1879,1880,1883,1885,1888,1890,1892,1895,1898,1901,1904,1907,1910,1912,1914,1917,1919,1921],{"class":492,"line":823},[490,1881,1882],{"class":574},"  log",[490,1884,841],{"class":570},[490,1886,1887],{"class":686},"error",[490,1889,698],{"class":704},[490,1891,1887],{"class":574},[490,1893,1894],{"class":570}," instanceof",[490,1896,1897],{"class":496}," Error",[490,1899,1900],{"class":570}," ?",[490,1902,1903],{"class":574}," error",[490,1905,1906],{"class":570}," :",[490,1908,1909],{"class":570}," new",[490,1911,1897],{"class":686},[490,1913,698],{"class":704},[490,1915,1916],{"class":686},"String",[490,1918,698],{"class":704},[490,1920,1887],{"class":574},[490,1922,1923],{"class":704},")))\n",[490,1925,1926,1928,1930,1932],{"class":492,"line":828},[490,1927,1882],{"class":574},[490,1929,841],{"class":570},[490,1931,966],{"class":686},[490,1933,1000],{"class":704},[490,1935,1936],{"class":492,"line":835},[490,1937,670],{"emptyLinePlaceholder":669},[490,1939,1940,1942,1944,1947,1949,1952,1954,1957,1959,1961,1963,1965,1967],{"class":492,"line":867},[490,1941,1741],{"class":676},[490,1943,571],{"class":570},[490,1945,1946],{"class":574}," message",[490,1948,603],{"class":570},[490,1950,1951],{"class":574}," why",[490,1953,603],{"class":570},[490,1955,1956],{"class":574}," fix",[490,1958,578],{"class":570},[490,1960,1747],{"class":570},[490,1962,1714],{"class":686},[490,1964,698],{"class":704},[490,1966,1887],{"class":574},[490,1968,726],{"class":704},[490,1970,1971,1974,1976,1978,1980,1983,1986,1988,1991,1994,1996,1999,2001,2003,2006,2008,2011,2013],{"class":492,"line":872},[490,1972,1973],{"class":574},"  console",[490,1975,841],{"class":570},[490,1977,1887],{"class":686},[490,1979,698],{"class":704},[490,1981,1982],{"class":570},"`${",[490,1984,1985],{"class":574},"message",[490,1987,818],{"class":570},[490,1989,1990],{"class":574},"\\n",[490,1992,1993],{"class":499},"Why: ",[490,1995,1825],{"class":570},[490,1997,1998],{"class":574},"why",[490,2000,818],{"class":570},[490,2002,1990],{"class":574},[490,2004,2005],{"class":499},"Fix: ",[490,2007,1825],{"class":570},[490,2009,2010],{"class":574},"fix",[490,2012,1835],{"class":570},[490,2014,726],{"class":704},[490,2016,2017,2020,2022,2025,2027,2030],{"class":492,"line":932},[490,2018,2019],{"class":574},"  process",[490,2021,841],{"class":570},[490,2023,2024],{"class":686},"exit",[490,2026,698],{"class":704},[490,2028,2029],{"class":718},"1",[490,2031,726],{"class":704},[490,2033,2034],{"class":492,"line":959},[490,2035,1579],{"class":570},[468,2037,170],{"id":2038},"configuration",[399,2040,2041,2042,2045,2046,2048],{},"See the ",[417,2043,2044],{"href":171},"Configuration reference"," for all available options (",[403,2047,758],{},", middleware options, sampling, silent mode, etc.).",[468,2050,2052],{"id":2051},"drain-enrichers","Drain & Enrichers",[399,2054,2055,2056,708],{},"Configure drain in ",[403,2057,758],{},[480,2059,2062],{"className":553,"code":2060,"filename":2061,"language":556,"meta":486,"style":486},"import type { DrainContext } from 'evlog'\nimport { initLogger } 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\ninitLogger({\n  env: { service: 'my-script' },\n  drain,\n})\n","scripts\u002Finit-logger.ts",[403,2063,2064,2084,2102,2120,2138,2142,2162,2190,2209,2215,2231,2235,2243,2263,2269],{"__ignoreMap":486},[490,2065,2066,2068,2070,2072,2074,2076,2078,2080,2082],{"class":492,"line":493},[490,2067,564],{"class":563},[490,2069,567],{"class":563},[490,2071,571],{"class":570},[490,2073,575],{"class":574},[490,2075,578],{"class":570},[490,2077,581],{"class":563},[490,2079,584],{"class":570},[490,2081,587],{"class":499},[490,2083,590],{"class":570},[490,2085,2086,2088,2090,2092,2094,2096,2098,2100],{"class":492,"line":593},[490,2087,564],{"class":563},[490,2089,571],{"class":570},[490,2091,600],{"class":574},[490,2093,578],{"class":570},[490,2095,581],{"class":563},[490,2097,584],{"class":570},[490,2099,587],{"class":499},[490,2101,590],{"class":570},[490,2103,2104,2106,2108,2110,2112,2114,2116,2118],{"class":492,"line":624},[490,2105,564],{"class":563},[490,2107,571],{"class":570},[490,2109,631],{"class":574},[490,2111,578],{"class":570},[490,2113,581],{"class":563},[490,2115,584],{"class":570},[490,2117,640],{"class":499},[490,2119,590],{"class":570},[490,2121,2122,2124,2126,2128,2130,2132,2134,2136],{"class":492,"line":645},[490,2123,564],{"class":563},[490,2125,571],{"class":570},[490,2127,652],{"class":574},[490,2129,578],{"class":570},[490,2131,581],{"class":563},[490,2133,584],{"class":570},[490,2135,661],{"class":499},[490,2137,590],{"class":570},[490,2139,2140],{"class":492,"line":666},[490,2141,670],{"emptyLinePlaceholder":669},[490,2143,2144,2146,2148,2150,2152,2154,2156,2158,2160],{"class":492,"line":673},[490,2145,677],{"class":676},[490,2147,680],{"class":574},[490,2149,683],{"class":570},[490,2151,652],{"class":686},[490,2153,689],{"class":570},[490,2155,692],{"class":496},[490,2157,695],{"class":570},[490,2159,698],{"class":574},[490,2161,763],{"class":570},[490,2163,2164,2167,2169,2171,2173,2175,2178,2180,2183,2185,2188],{"class":492,"line":729},[490,2165,2166],{"class":704},"  batch",[490,2168,708],{"class":570},[490,2170,571],{"class":570},[490,2172,713],{"class":704},[490,2174,708],{"class":570},[490,2176,2177],{"class":718}," 50",[490,2179,603],{"class":570},[490,2181,2182],{"class":704}," intervalMs",[490,2184,708],{"class":570},[490,2186,2187],{"class":718}," 5000",[490,2189,803],{"class":570},[490,2191,2192,2195,2197,2199,2202,2204,2207],{"class":492,"line":750},[490,2193,2194],{"class":704},"  retry",[490,2196,708],{"class":570},[490,2198,571],{"class":570},[490,2200,2201],{"class":704}," maxAttempts",[490,2203,708],{"class":570},[490,2205,2206],{"class":718}," 3",[490,2208,803],{"class":570},[490,2210,2211,2213],{"class":492,"line":755},[490,2212,818],{"class":570},[490,2214,726],{"class":574},[490,2216,2217,2219,2221,2223,2225,2227,2229],{"class":492,"line":766},[490,2218,677],{"class":676},[490,2220,734],{"class":574},[490,2222,683],{"class":570},[490,2224,739],{"class":686},[490,2226,698],{"class":574},[490,2228,744],{"class":686},[490,2230,747],{"class":574},[490,2232,2233],{"class":492,"line":806},[490,2234,670],{"emptyLinePlaceholder":669},[490,2236,2237,2239,2241],{"class":492,"line":815},[490,2238,758],{"class":686},[490,2240,698],{"class":574},[490,2242,763],{"class":570},[490,2244,2245,2247,2249,2251,2253,2255,2257,2259,2261],{"class":492,"line":823},[490,2246,769],{"class":704},[490,2248,708],{"class":570},[490,2250,571],{"class":570},[490,2252,776],{"class":704},[490,2254,708],{"class":570},[490,2256,584],{"class":570},[490,2258,783],{"class":499},[490,2260,786],{"class":570},[490,2262,803],{"class":570},[490,2264,2265,2267],{"class":492,"line":828},[490,2266,809],{"class":574},[490,2268,812],{"class":570},[490,2270,2271,2273],{"class":492,"line":835},[490,2272,818],{"class":570},[490,2274,726],{"class":574},[412,2276,2041,2277,2279],{"color":844,"icon":13},[417,2278,290],{"href":295}," docs for all available drain adapters (Axiom, OTLP, PostHog, Sentry, Better Stack).",[412,2281,2283,2284,2289],{"color":414,"icon":2282},"i-lucide-arrow-right","See the full ",[417,2285,2288],{"href":2286,"rel":2287},"https:\u002F\u002Fgithub.com\u002Fhugorcd\u002Fevlog\u002Ftree\u002Fmain\u002Fexamples\u002Fbun-script",[461],"bun-script example"," for a complete working script.",[468,2291,2293],{"id":2292},"next-steps","Next Steps",[433,2295,2296,2301,2306,2311],{},[436,2297,2298,2300],{},[417,2299,51],{"href":52},": Design comprehensive events with context layering",[436,2302,2303,2305],{},[417,2304,290],{"href":295},": Send logs to Axiom, Sentry, PostHog, and more",[436,2307,2308,2310],{},[417,2309,175],{"href":176},": Control log volume with head and tail sampling",[436,2312,2313,2315,2316,2318,2319,2321,2322,2325],{},[417,2314,56],{"href":57},": Throw errors with ",[403,2317,1998],{},", ",[403,2320,2010],{},", and ",[403,2323,2324],{},"link"," fields",[2327,2328,2329],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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":486,"searchDepth":593,"depth":593,"links":2331},[2332,2336,2337,2338,2339,2340,2341],{"id":470,"depth":593,"text":20,"children":2333},[2334,2335],{"id":474,"depth":624,"text":475},{"id":549,"depth":624,"text":550},{"id":1032,"depth":593,"text":1033},{"id":1299,"depth":593,"text":51},{"id":1687,"depth":593,"text":1688},{"id":2038,"depth":593,"text":170},{"id":2051,"depth":593,"text":2052},{"id":2292,"depth":593,"text":2293},"Use evlog in standalone TypeScript scripts, CLI tools, queues, cron jobs, and any TypeScript process.","md",null,{},{"title":271,"icon":183},{"title":394,"description":2342},"T_ry9G5iw54j1Rz3a6ghk_H_ohvtLt2rZ2QFuMkiGMM",[2350,2352],{"title":266,"path":267,"stem":268,"description":2351,"icon":269,"children":-1},"Wide events, structured errors, and logging in Cloudflare Workers and Durable Objects.",{"title":275,"path":276,"stem":277,"description":2353,"icon":278,"children":-1},"Wide events and structured errors in Astro server middleware.",1778106398963]