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