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