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