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