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