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