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