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