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