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