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