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