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