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