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