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