[{"data":1,"prerenderedAt":3521},["ShallowReactive",2],{"navigation_docs":3,"-logging-simple-logging":454,"-logging-simple-logging-surround":3516},[4,35,159,201,289,352,438],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24,29],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",{"title":30,"path":31,"stem":32,"icon":33},"vs Other Loggers","\u002Fgetting-started\u002Fvs-other-loggers","1.getting-started\u002F5.vs-other-loggers","i-lucide-scale",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Logging","\u002Flogging","2.logging",[40,45,50,55,60,65,70,99,127],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flogging\u002Foverview","2.logging\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flogging\u002Fsimple-logging","2.logging\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flogging\u002Fwide-events","2.logging\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flogging\u002Fstructured-errors","2.logging\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Catalogs","\u002Flogging\u002Fcatalogs","2.logging\u002F4.catalogs","i-lucide-book-open",{"title":66,"path":67,"stem":68,"icon":69},"Client Logging","\u002Flogging\u002Fclient-logging","2.logging\u002F5.client-logging","i-lucide-monitor",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":34},"AI SDK","i-simple-icons-vercel","\u002Flogging\u002Fai-sdk","2.logging\u002F6.ai-sdk",[76,79,84,89,94],{"title":41,"path":77,"stem":78,"icon":44},"\u002Flogging\u002Fai-sdk\u002Foverview","2.logging\u002F6.ai-sdk\u002F01.overview",{"title":80,"path":81,"stem":82,"icon":83},"Usage","\u002Flogging\u002Fai-sdk\u002Fusage","2.logging\u002F6.ai-sdk\u002F02.usage","i-lucide-code",{"title":85,"path":86,"stem":87,"icon":88},"Options","\u002Flogging\u002Fai-sdk\u002Foptions","2.logging\u002F6.ai-sdk\u002F03.options","i-lucide-sliders",{"title":90,"path":91,"stem":92,"icon":93},"Metadata","\u002Flogging\u002Fai-sdk\u002Fmetadata","2.logging\u002F6.ai-sdk\u002F04.metadata","i-lucide-database",{"title":95,"path":96,"stem":97,"icon":98},"Telemetry","\u002Flogging\u002Fai-sdk\u002Ftelemetry","2.logging\u002F6.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":100,"icon":101,"path":102,"stem":103,"children":104,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Flogging\u002Fbetter-auth","2.logging\u002F7.better-auth",[105,108,113,118,122],{"title":41,"path":106,"stem":107,"icon":44},"\u002Flogging\u002Fbetter-auth\u002Foverview","2.logging\u002F7.better-auth\u002F01.overview",{"title":109,"path":110,"stem":111,"icon":112},"Identify User","\u002Flogging\u002Fbetter-auth\u002Fidentify-user","2.logging\u002F7.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":114,"path":115,"stem":116,"icon":117},"Middleware","\u002Flogging\u002Fbetter-auth\u002Fmiddleware","2.logging\u002F7.better-auth\u002F03.middleware","i-lucide-shield",{"title":119,"path":120,"stem":121,"icon":69},"Client Sync","\u002Flogging\u002Fbetter-auth\u002Fclient-sync","2.logging\u002F7.better-auth\u002F04.client-sync",{"title":123,"path":124,"stem":125,"icon":126},"Performance","\u002Flogging\u002Fbetter-auth\u002Fperformance","2.logging\u002F7.better-auth\u002F05.performance","i-lucide-gauge",{"title":128,"icon":129,"path":130,"stem":131,"children":132,"page":34},"Audit Logs","i-lucide-shield-check","\u002Flogging\u002Faudit","2.logging\u002F8.audit",[133,136,141,146,151,155],{"title":41,"path":134,"stem":135,"icon":44},"\u002Flogging\u002Faudit\u002Foverview","2.logging\u002F8.audit\u002F01.overview",{"title":137,"path":138,"stem":139,"icon":140},"Schema","\u002Flogging\u002Faudit\u002Fschema","2.logging\u002F8.audit\u002F02.schema","i-lucide-file-text",{"title":142,"path":143,"stem":144,"icon":145},"Recording","\u002Flogging\u002Faudit\u002Frecording","2.logging\u002F8.audit\u002F03.recording","i-lucide-pen-line",{"title":147,"path":148,"stem":149,"icon":150},"Drains","\u002Flogging\u002Faudit\u002Fpipeline","2.logging\u002F8.audit\u002F04.pipeline","i-lucide-link",{"title":152,"path":153,"stem":154,"icon":129},"Compliance","\u002Flogging\u002Faudit\u002Fcompliance","2.logging\u002F8.audit\u002F05.compliance",{"title":156,"path":157,"stem":158,"icon":64},"Recipes","\u002Flogging\u002Faudit\u002Frecipes","2.logging\u002F8.audit\u002F06.recipes",{"title":160,"path":161,"stem":162,"children":163,"page":34},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[164,169,174,179,184,188,191,196],{"title":165,"path":166,"stem":167,"icon":168},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":170,"path":171,"stem":172,"icon":173},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":175,"path":176,"stem":177,"icon":178},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":180,"path":181,"stem":182,"icon":183},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":185,"path":186,"stem":187,"icon":129},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":123,"path":189,"stem":190,"icon":126},"\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance",{"title":192,"path":193,"stem":194,"icon":195},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":197,"path":198,"stem":199,"icon":200},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":202,"path":203,"stem":204,"children":205,"page":34},"Frameworks","\u002Fframeworks","4.frameworks",[206,210,215,220,225,230,235,240,245,250,255,260,265,270,274,279,284],{"title":41,"path":207,"stem":208,"icon":209},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":211,"path":212,"stem":213,"icon":214},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":216,"path":217,"stem":218,"icon":219},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":221,"path":222,"stem":223,"icon":224},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":226,"path":227,"stem":228,"icon":229},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":231,"path":232,"stem":233,"icon":234},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":236,"path":237,"stem":238,"icon":239},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":241,"path":242,"stem":243,"icon":244},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":246,"path":247,"stem":248,"icon":249},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":251,"path":252,"stem":253,"icon":254},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":256,"path":257,"stem":258,"icon":259},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":261,"path":262,"stem":263,"icon":264},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":266,"path":267,"stem":268,"icon":269},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":271,"path":272,"stem":273,"icon":183},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":275,"path":276,"stem":277,"icon":278},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":280,"path":281,"stem":282,"icon":283},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":285,"path":286,"stem":287,"icon":288},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F17.custom-integration","i-lucide-puzzle",{"title":290,"path":291,"stem":292,"children":293,"page":34},"Build on top","\u002Fbuild-on-top","5.build-on-top",[294,297,302,307,312,316,321,326,330,334,338,342,347],{"title":41,"path":295,"stem":296,"icon":54},"\u002Fbuild-on-top\u002Foverview","5.build-on-top\u002F0.overview",{"title":298,"path":299,"stem":300,"icon":301},"In-process stream","\u002Fbuild-on-top\u002Fin-process-stream","5.build-on-top\u002F1.in-process-stream","i-lucide-radio-tower",{"title":303,"path":304,"stem":305,"icon":306},"Fanout","\u002Fbuild-on-top\u002Ffanout-and-multi-drain","5.build-on-top\u002F10.fanout-and-multi-drain","i-lucide-share-2",{"title":308,"path":309,"stem":310,"icon":311},"Identity headers","\u002Fbuild-on-top\u002Fidentity-headers","5.build-on-top\u002F11.identity-headers","i-lucide-fingerprint",{"title":313,"path":314,"stem":315,"icon":288},"Custom framework","\u002Fbuild-on-top\u002Fcustom-framework","5.build-on-top\u002F12.custom-framework",{"title":317,"path":318,"stem":319,"icon":320},"Stream server","\u002Fbuild-on-top\u002Fstream-server","5.build-on-top\u002F2.stream-server","i-lucide-radio",{"title":322,"path":323,"stem":324,"icon":325},"FS reader","\u002Fbuild-on-top\u002Ffs-reader","5.build-on-top\u002F3.fs-reader","i-lucide-folder-search",{"title":156,"path":327,"stem":328,"icon":329},"\u002Fbuild-on-top\u002Fconsumer-recipes","5.build-on-top\u002F4.consumer-recipes","i-lucide-chef-hat",{"title":331,"path":332,"stem":333,"icon":288},"Plugins","\u002Fbuild-on-top\u002Fplugins","5.build-on-top\u002F5.plugins",{"title":335,"path":336,"stem":337,"icon":28},"Custom enrichers","\u002Fbuild-on-top\u002Fcustom-enrichers","5.build-on-top\u002F6.custom-enrichers",{"title":339,"path":340,"stem":341,"icon":178},"Tail sampling","\u002Fbuild-on-top\u002Ftail-sampling","5.build-on-top\u002F7.tail-sampling",{"title":343,"path":344,"stem":345,"icon":346},"Custom drains","\u002Fbuild-on-top\u002Fcustom-drains","5.build-on-top\u002F8.custom-drains","i-lucide-code-2",{"title":348,"path":349,"stem":350,"icon":351},"Drain pipeline","\u002Fbuild-on-top\u002Fdrain-pipeline","5.build-on-top\u002F9.drain-pipeline","i-lucide-workflow",{"title":353,"path":354,"stem":355,"children":356,"page":34},"Adapters","\u002Fadapters","6.adapters",[357,360,400,415],{"title":41,"path":358,"stem":359,"icon":44},"\u002Fadapters\u002Foverview","6.adapters\u002F01.overview",{"title":361,"path":362,"stem":363,"children":364,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[365,370,375,380,385,390,395],{"title":366,"path":367,"stem":368,"icon":369},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":371,"path":372,"stem":373,"icon":374},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":376,"path":377,"stem":378,"icon":379},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":381,"path":382,"stem":383,"icon":384},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":386,"path":387,"stem":388,"icon":389},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":391,"path":392,"stem":393,"icon":394},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":396,"path":397,"stem":398,"icon":399},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":401,"path":402,"stem":403,"children":404,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[405,410],{"title":406,"path":407,"stem":408,"icon":409},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":411,"path":412,"stem":413,"icon":414},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":416,"path":417,"stem":418,"children":419,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[420,424,429,433],{"title":421,"path":422,"stem":423,"icon":351},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline",{"title":425,"path":426,"stem":427,"icon":428},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":430,"path":431,"stem":432,"icon":83},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom",{"title":434,"path":435,"stem":436,"icon":437},"Toolkit","\u002Fadapters\u002Fbuilding-blocks\u002Ftoolkit","6.adapters\u002F04.building-blocks\u002F04.toolkit","i-lucide-blocks",{"title":439,"path":440,"stem":441,"children":442,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[443,446,450],{"title":41,"path":444,"stem":445,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":447,"path":448,"stem":449,"icon":288},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":451,"path":452,"stem":453,"icon":83},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":455,"title":46,"body":456,"description":3506,"extension":3507,"links":3508,"meta":3512,"navigation":3513,"path":47,"seo":3514,"stem":48,"__hash__":3515},"docs\u002F2.logging\u002F1.simple-logging.md",{"type":457,"value":458,"toc":3489},"minimark",[459,472,485,497,502,505,645,655,659,664,667,809,859,863,866,1030,1087,1097,1101,1180,1194,1198,1202,1348,1352,1493,1497,1706,1710,1717,1876,1880,1891,2707,2710,2921,2930,2937,2941,2956,3424,3432,3436,3485],[460,461,462,463,467,468,471],"p",{},"The ",[464,465,466],"code",{},"log"," API is evlog's general-purpose logger. Use it the way you'd use pino, consola, or ",[464,469,470],{},"console.log"," — every call emits a structured event through the same drain pipeline as wide events. The two modes coexist; neither is an upgrade of the other.",[473,474,476,477,481,482,484],"callout",{"color":475,"icon":428},"neutral","Looking for the same API in CLIs, libraries, jobs, and edge? Start with ",[478,479,480],"a",{"href":272},"Standalone TypeScript"," and ",[478,483,266],{"href":267},".",[473,486,488,489,491,492,496],{"color":487,"icon":28},"info","In Nuxt, ",[464,490,466],{}," is ",[493,494,495],"strong",{},"auto-imported",". No import statement needed.",[498,499,501],"h2",{"id":500},"setup","Setup",[460,503,504],{},"For standalone projects (non-Nuxt), initialize once at startup:",[506,507,513],"pre",{"className":508,"code":509,"filename":510,"language":511,"meta":512,"style":512},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { initLogger, log } from 'evlog'\n\ninitLogger({\n  env: { service: 'my-app' },\n})\n\nlog.info('app', 'Server started')\n","src\u002Findex.ts","typescript","",[464,514,515,554,561,574,602,611,616],{"__ignoreMap":512},[516,517,520,524,528,532,535,538,541,544,547,551],"span",{"class":518,"line":519},"line",1,[516,521,523],{"class":522},"s7zQu","import",[516,525,527],{"class":526},"sMK4o"," {",[516,529,531],{"class":530},"sTEyZ"," initLogger",[516,533,534],{"class":526},",",[516,536,537],{"class":530}," log",[516,539,540],{"class":526}," }",[516,542,543],{"class":522}," from",[516,545,546],{"class":526}," '",[516,548,550],{"class":549},"sfazB","evlog",[516,552,553],{"class":526},"'\n",[516,555,557],{"class":518,"line":556},2,[516,558,560],{"emptyLinePlaceholder":559},true,"\n",[516,562,564,568,571],{"class":518,"line":563},3,[516,565,567],{"class":566},"s2Zo4","initLogger",[516,569,570],{"class":530},"(",[516,572,573],{"class":526},"{\n",[516,575,577,581,584,586,589,591,593,596,599],{"class":518,"line":576},4,[516,578,580],{"class":579},"swJcz","  env",[516,582,583],{"class":526},":",[516,585,527],{"class":526},[516,587,588],{"class":579}," service",[516,590,583],{"class":526},[516,592,546],{"class":526},[516,594,595],{"class":549},"my-app",[516,597,598],{"class":526},"'",[516,600,601],{"class":526}," },\n",[516,603,605,608],{"class":518,"line":604},5,[516,606,607],{"class":526},"}",[516,609,610],{"class":530},")\n",[516,612,614],{"class":518,"line":613},6,[516,615,560],{"emptyLinePlaceholder":559},[516,617,619,621,623,625,627,629,632,634,636,638,641,643],{"class":518,"line":618},7,[516,620,466],{"class":530},[516,622,484],{"class":526},[516,624,487],{"class":566},[516,626,570],{"class":530},[516,628,598],{"class":526},[516,630,631],{"class":549},"app",[516,633,598],{"class":526},[516,635,534],{"class":526},[516,637,546],{"class":526},[516,639,640],{"class":549},"Server started",[516,642,598],{"class":526},[516,644,610],{"class":530},[473,646,647,650,651,654],{"color":487,"icon":13},[464,648,649],{},"env.service"," defaults to ",[464,652,653],{},"'app'"," if not specified. Only set it if you want a custom service name.",[498,656,658],{"id":657},"two-call-styles","Two Call Styles",[660,661,663],"h3",{"id":662},"tagged-logs","Tagged Logs",[460,665,666],{},"Pass a tag and a message for quick, readable output:",[506,668,670],{"className":508,"code":669,"filename":510,"language":511,"meta":512,"style":512},"import { log } from 'evlog'\n\nlog.info('auth', 'User logged in')\nlog.warn('cache', 'Cache miss for key user:42')\nlog.error('payment', 'Stripe webhook failed')\nlog.debug('router', 'Matched route \u002Fapi\u002Fcheckout')\n",[464,671,672,690,694,722,751,780],{"__ignoreMap":512},[516,673,674,676,678,680,682,684,686,688],{"class":518,"line":519},[516,675,523],{"class":522},[516,677,527],{"class":526},[516,679,537],{"class":530},[516,681,540],{"class":526},[516,683,543],{"class":522},[516,685,546],{"class":526},[516,687,550],{"class":549},[516,689,553],{"class":526},[516,691,692],{"class":518,"line":556},[516,693,560],{"emptyLinePlaceholder":559},[516,695,696,698,700,702,704,706,709,711,713,715,718,720],{"class":518,"line":563},[516,697,466],{"class":530},[516,699,484],{"class":526},[516,701,487],{"class":566},[516,703,570],{"class":530},[516,705,598],{"class":526},[516,707,708],{"class":549},"auth",[516,710,598],{"class":526},[516,712,534],{"class":526},[516,714,546],{"class":526},[516,716,717],{"class":549},"User logged in",[516,719,598],{"class":526},[516,721,610],{"class":530},[516,723,724,726,728,731,733,735,738,740,742,744,747,749],{"class":518,"line":576},[516,725,466],{"class":530},[516,727,484],{"class":526},[516,729,730],{"class":566},"warn",[516,732,570],{"class":530},[516,734,598],{"class":526},[516,736,737],{"class":549},"cache",[516,739,598],{"class":526},[516,741,534],{"class":526},[516,743,546],{"class":526},[516,745,746],{"class":549},"Cache miss for key user:42",[516,748,598],{"class":526},[516,750,610],{"class":530},[516,752,753,755,757,760,762,764,767,769,771,773,776,778],{"class":518,"line":604},[516,754,466],{"class":530},[516,756,484],{"class":526},[516,758,759],{"class":566},"error",[516,761,570],{"class":530},[516,763,598],{"class":526},[516,765,766],{"class":549},"payment",[516,768,598],{"class":526},[516,770,534],{"class":526},[516,772,546],{"class":526},[516,774,775],{"class":549},"Stripe webhook failed",[516,777,598],{"class":526},[516,779,610],{"class":530},[516,781,782,784,786,789,791,793,796,798,800,802,805,807],{"class":518,"line":613},[516,783,466],{"class":530},[516,785,484],{"class":526},[516,787,788],{"class":566},"debug",[516,790,570],{"class":530},[516,792,598],{"class":526},[516,794,795],{"class":549},"router",[516,797,598],{"class":526},[516,799,534],{"class":526},[516,801,546],{"class":526},[516,803,804],{"class":549},"Matched route \u002Fapi\u002Fcheckout",[516,806,598],{"class":526},[516,808,610],{"class":530},[506,810,815],{"className":811,"code":812,"filename":813,"language":814,"meta":512,"style":512},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","10:23:45.612 [auth] User logged in\n10:23:45.613 [cache] Cache miss for key user:42\n10:23:45.614 ERROR [payment] Stripe webhook failed\n10:23:45.615 [router] Matched route \u002Fapi\u002Fcheckout\n","Output (Pretty)","bash",[464,816,817,826,840,851],{"__ignoreMap":512},[516,818,819,823],{"class":518,"line":519},[516,820,822],{"class":821},"sBMFI","10:23:45.612",[516,824,825],{"class":530}," [auth] User logged in\n",[516,827,828,831,834,837],{"class":518,"line":556},[516,829,830],{"class":821},"10:23:45.613",[516,832,833],{"class":530}," [cache] Cache miss ",[516,835,836],{"class":522},"for",[516,838,839],{"class":530}," key user:42\n",[516,841,842,845,848],{"class":518,"line":563},[516,843,844],{"class":821},"10:23:45.614",[516,846,847],{"class":549}," ERROR",[516,849,850],{"class":530}," [payment] Stripe webhook failed\n",[516,852,853,856],{"class":518,"line":576},[516,854,855],{"class":821},"10:23:45.615",[516,857,858],{"class":530}," [router] Matched route \u002Fapi\u002Fcheckout\n",[660,860,862],{"id":861},"structured-events","Structured Events",[460,864,865],{},"Pass an object for rich, queryable events that flow through the drain pipeline:",[506,867,869],{"className":508,"code":868,"filename":510,"language":511,"meta":512,"style":512},"import { log } from 'evlog'\n\nlog.info({ action: 'user_login', userId: 42, method: 'oauth', provider: 'github' })\nlog.error({ action: 'sync_failed', source: 'postgres', target: 's3', error: 'connection_timeout' })\n",[464,870,871,889,893,961],{"__ignoreMap":512},[516,872,873,875,877,879,881,883,885,887],{"class":518,"line":519},[516,874,523],{"class":522},[516,876,527],{"class":526},[516,878,537],{"class":530},[516,880,540],{"class":526},[516,882,543],{"class":522},[516,884,546],{"class":526},[516,886,550],{"class":549},[516,888,553],{"class":526},[516,890,891],{"class":518,"line":556},[516,892,560],{"emptyLinePlaceholder":559},[516,894,895,897,899,901,903,906,909,911,913,916,918,920,923,925,929,931,934,936,938,941,943,945,948,950,952,955,957,959],{"class":518,"line":563},[516,896,466],{"class":530},[516,898,484],{"class":526},[516,900,487],{"class":566},[516,902,570],{"class":530},[516,904,905],{"class":526},"{",[516,907,908],{"class":579}," action",[516,910,583],{"class":526},[516,912,546],{"class":526},[516,914,915],{"class":549},"user_login",[516,917,598],{"class":526},[516,919,534],{"class":526},[516,921,922],{"class":579}," userId",[516,924,583],{"class":526},[516,926,928],{"class":927},"sbssI"," 42",[516,930,534],{"class":526},[516,932,933],{"class":579}," method",[516,935,583],{"class":526},[516,937,546],{"class":526},[516,939,940],{"class":549},"oauth",[516,942,598],{"class":526},[516,944,534],{"class":526},[516,946,947],{"class":579}," provider",[516,949,583],{"class":526},[516,951,546],{"class":526},[516,953,954],{"class":549},"github",[516,956,598],{"class":526},[516,958,540],{"class":526},[516,960,610],{"class":530},[516,962,963,965,967,969,971,973,975,977,979,982,984,986,989,991,993,996,998,1000,1003,1005,1007,1010,1012,1014,1017,1019,1021,1024,1026,1028],{"class":518,"line":576},[516,964,466],{"class":530},[516,966,484],{"class":526},[516,968,759],{"class":566},[516,970,570],{"class":530},[516,972,905],{"class":526},[516,974,908],{"class":579},[516,976,583],{"class":526},[516,978,546],{"class":526},[516,980,981],{"class":549},"sync_failed",[516,983,598],{"class":526},[516,985,534],{"class":526},[516,987,988],{"class":579}," source",[516,990,583],{"class":526},[516,992,546],{"class":526},[516,994,995],{"class":549},"postgres",[516,997,598],{"class":526},[516,999,534],{"class":526},[516,1001,1002],{"class":579}," target",[516,1004,583],{"class":526},[516,1006,546],{"class":526},[516,1008,1009],{"class":549},"s3",[516,1011,598],{"class":526},[516,1013,534],{"class":526},[516,1015,1016],{"class":579}," error",[516,1018,583],{"class":526},[516,1020,546],{"class":526},[516,1022,1023],{"class":549},"connection_timeout",[516,1025,598],{"class":526},[516,1027,540],{"class":526},[516,1029,610],{"class":530},[506,1031,1033],{"className":811,"code":1032,"filename":813,"language":814,"meta":512,"style":512},"10:23:45.612 INFO [my-app]\n  ├─ action: user_login\n  ├─ userId: 42\n  ├─ method: oauth\n  └─ provider: github\n",[464,1034,1035,1045,1056,1066,1076],{"__ignoreMap":512},[516,1036,1037,1039,1042],{"class":518,"line":519},[516,1038,822],{"class":821},[516,1040,1041],{"class":549}," INFO",[516,1043,1044],{"class":530}," [my-app]\n",[516,1046,1047,1050,1053],{"class":518,"line":556},[516,1048,1049],{"class":821},"  ├─",[516,1051,1052],{"class":549}," action:",[516,1054,1055],{"class":549}," user_login\n",[516,1057,1058,1060,1063],{"class":518,"line":563},[516,1059,1049],{"class":821},[516,1061,1062],{"class":549}," userId:",[516,1064,1065],{"class":927}," 42\n",[516,1067,1068,1070,1073],{"class":518,"line":576},[516,1069,1049],{"class":821},[516,1071,1072],{"class":549}," method:",[516,1074,1075],{"class":549}," oauth\n",[516,1077,1078,1081,1084],{"class":518,"line":604},[516,1079,1080],{"class":821},"  └─",[516,1082,1083],{"class":549}," provider:",[516,1085,1086],{"class":549}," github\n",[473,1088,1089,1092,1093,1096],{"color":487,"icon":13},[493,1090,1091],{},"Tagged logs"," are optimized for console readability. ",[493,1094,1095],{},"Structured events"," (object form) produce full wide events that flow through the drain pipeline to external services.",[498,1098,1100],{"id":1099},"log-levels","Log Levels",[1102,1103,1104,1120],"table",{},[1105,1106,1107],"thead",{},[1108,1109,1110,1114,1117],"tr",{},[1111,1112,1113],"th",{},"Level",[1111,1115,1116],{},"Method",[1111,1118,1119],{},"When to use",[1121,1122,1123,1138,1152,1166],"tbody",{},[1108,1124,1125,1130,1135],{},[1126,1127,1128],"td",{},[464,1129,487],{},[1126,1131,1132],{},[464,1133,1134],{},"log.info()",[1126,1136,1137],{},"Normal operations: startup, shutdown, successful actions",[1108,1139,1140,1144,1149],{},[1126,1141,1142],{},[464,1143,730],{},[1126,1145,1146],{},[464,1147,1148],{},"log.warn()",[1126,1150,1151],{},"Unexpected but recoverable situations: cache miss, retry, deprecation",[1108,1153,1154,1158,1163],{},[1126,1155,1156],{},[464,1157,759],{},[1126,1159,1160],{},[464,1161,1162],{},"log.error()",[1126,1164,1165],{},"Failures that need attention: API errors, timeouts, invalid state",[1108,1167,1168,1172,1177],{},[1126,1169,1170],{},[464,1171,788],{},[1126,1173,1174],{},[464,1175,1176],{},"log.debug()",[1126,1178,1179],{},"Development-only details: SQL queries, intermediate state, routing",[473,1181,1184,1186,1187,1189,1190,1193],{"color":1182,"icon":1183},"warning","i-lucide-lightbulb",[464,1185,1176],{}," calls can be stripped from production builds using the ",[478,1188,192],{"href":193}," or the Nuxt module's ",[464,1191,1192],{},"strip"," option.",[498,1195,1197],{"id":1196},"common-patterns","Common Patterns",[660,1199,1201],{"id":1200},"application-lifecycle","Application Lifecycle",[506,1203,1205],{"className":508,"code":1204,"filename":510,"language":511,"meta":512,"style":512},"import { log } from 'evlog'\n\nlog.info('app', 'Starting server on port 3000')\nlog.info({ action: 'db_connected', host: 'localhost', database: 'mydb', pool: 10 })\nlog.info('app', 'Ready to accept connections')\n",[464,1206,1207,1225,1229,1256,1321],{"__ignoreMap":512},[516,1208,1209,1211,1213,1215,1217,1219,1221,1223],{"class":518,"line":519},[516,1210,523],{"class":522},[516,1212,527],{"class":526},[516,1214,537],{"class":530},[516,1216,540],{"class":526},[516,1218,543],{"class":522},[516,1220,546],{"class":526},[516,1222,550],{"class":549},[516,1224,553],{"class":526},[516,1226,1227],{"class":518,"line":556},[516,1228,560],{"emptyLinePlaceholder":559},[516,1230,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1252,1254],{"class":518,"line":563},[516,1232,466],{"class":530},[516,1234,484],{"class":526},[516,1236,487],{"class":566},[516,1238,570],{"class":530},[516,1240,598],{"class":526},[516,1242,631],{"class":549},[516,1244,598],{"class":526},[516,1246,534],{"class":526},[516,1248,546],{"class":526},[516,1250,1251],{"class":549},"Starting server on port 3000",[516,1253,598],{"class":526},[516,1255,610],{"class":530},[516,1257,1258,1260,1262,1264,1266,1268,1270,1272,1274,1277,1279,1281,1284,1286,1288,1291,1293,1295,1298,1300,1302,1305,1307,1309,1312,1314,1317,1319],{"class":518,"line":576},[516,1259,466],{"class":530},[516,1261,484],{"class":526},[516,1263,487],{"class":566},[516,1265,570],{"class":530},[516,1267,905],{"class":526},[516,1269,908],{"class":579},[516,1271,583],{"class":526},[516,1273,546],{"class":526},[516,1275,1276],{"class":549},"db_connected",[516,1278,598],{"class":526},[516,1280,534],{"class":526},[516,1282,1283],{"class":579}," host",[516,1285,583],{"class":526},[516,1287,546],{"class":526},[516,1289,1290],{"class":549},"localhost",[516,1292,598],{"class":526},[516,1294,534],{"class":526},[516,1296,1297],{"class":579}," database",[516,1299,583],{"class":526},[516,1301,546],{"class":526},[516,1303,1304],{"class":549},"mydb",[516,1306,598],{"class":526},[516,1308,534],{"class":526},[516,1310,1311],{"class":579}," pool",[516,1313,583],{"class":526},[516,1315,1316],{"class":927}," 10",[516,1318,540],{"class":526},[516,1320,610],{"class":530},[516,1322,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1344,1346],{"class":518,"line":604},[516,1324,466],{"class":530},[516,1326,484],{"class":526},[516,1328,487],{"class":566},[516,1330,570],{"class":530},[516,1332,598],{"class":526},[516,1334,631],{"class":549},[516,1336,598],{"class":526},[516,1338,534],{"class":526},[516,1340,546],{"class":526},[516,1342,1343],{"class":549},"Ready to accept connections",[516,1345,598],{"class":526},[516,1347,610],{"class":530},[660,1349,1351],{"id":1350},"background-tasks","Background Tasks",[506,1353,1356],{"className":508,"code":1354,"filename":1355,"language":511,"meta":512,"style":512},"import { log } from 'evlog'\n\nlog.info({ action: 'cron_started', job: 'cleanup', schedule: '0 *\u002F6 * * *' })\nlog.info({ action: 'cron_completed', job: 'cleanup', deleted: 42, duration: 1200 })\n","src\u002Fjobs\u002Fcleanup.ts",[464,1357,1358,1376,1380,1435],{"__ignoreMap":512},[516,1359,1360,1362,1364,1366,1368,1370,1372,1374],{"class":518,"line":519},[516,1361,523],{"class":522},[516,1363,527],{"class":526},[516,1365,537],{"class":530},[516,1367,540],{"class":526},[516,1369,543],{"class":522},[516,1371,546],{"class":526},[516,1373,550],{"class":549},[516,1375,553],{"class":526},[516,1377,1378],{"class":518,"line":556},[516,1379,560],{"emptyLinePlaceholder":559},[516,1381,1382,1384,1386,1388,1390,1392,1394,1396,1398,1401,1403,1405,1408,1410,1412,1415,1417,1419,1422,1424,1426,1429,1431,1433],{"class":518,"line":563},[516,1383,466],{"class":530},[516,1385,484],{"class":526},[516,1387,487],{"class":566},[516,1389,570],{"class":530},[516,1391,905],{"class":526},[516,1393,908],{"class":579},[516,1395,583],{"class":526},[516,1397,546],{"class":526},[516,1399,1400],{"class":549},"cron_started",[516,1402,598],{"class":526},[516,1404,534],{"class":526},[516,1406,1407],{"class":579}," job",[516,1409,583],{"class":526},[516,1411,546],{"class":526},[516,1413,1414],{"class":549},"cleanup",[516,1416,598],{"class":526},[516,1418,534],{"class":526},[516,1420,1421],{"class":579}," schedule",[516,1423,583],{"class":526},[516,1425,546],{"class":526},[516,1427,1428],{"class":549},"0 *\u002F6 * * *",[516,1430,598],{"class":526},[516,1432,540],{"class":526},[516,1434,610],{"class":530},[516,1436,1437,1439,1441,1443,1445,1447,1449,1451,1453,1456,1458,1460,1462,1464,1466,1468,1470,1472,1475,1477,1479,1481,1484,1486,1489,1491],{"class":518,"line":576},[516,1438,466],{"class":530},[516,1440,484],{"class":526},[516,1442,487],{"class":566},[516,1444,570],{"class":530},[516,1446,905],{"class":526},[516,1448,908],{"class":579},[516,1450,583],{"class":526},[516,1452,546],{"class":526},[516,1454,1455],{"class":549},"cron_completed",[516,1457,598],{"class":526},[516,1459,534],{"class":526},[516,1461,1407],{"class":579},[516,1463,583],{"class":526},[516,1465,546],{"class":526},[516,1467,1414],{"class":549},[516,1469,598],{"class":526},[516,1471,534],{"class":526},[516,1473,1474],{"class":579}," deleted",[516,1476,583],{"class":526},[516,1478,928],{"class":927},[516,1480,534],{"class":526},[516,1482,1483],{"class":579}," duration",[516,1485,583],{"class":526},[516,1487,1488],{"class":927}," 1200",[516,1490,540],{"class":526},[516,1492,610],{"class":530},[660,1494,1496],{"id":1495},"utility-functions","Utility Functions",[506,1498,1501],{"className":508,"code":1499,"filename":1500,"language":511,"meta":512,"style":512},"import { log } from 'evlog'\n\nfunction processWebhook(payload: WebhookPayload) {\n  log.info({ action: 'webhook_received', type: payload.type, source: payload.source })\n\n  if (!isValid(payload)) {\n    log.warn({ action: 'webhook_invalid', type: payload.type, reason: 'missing_signature' })\n    return\n  }\n}\n","src\u002Futils\u002Fwebhook.ts",[464,1502,1503,1521,1525,1551,1607,1611,1634,1688,1694,1700],{"__ignoreMap":512},[516,1504,1505,1507,1509,1511,1513,1515,1517,1519],{"class":518,"line":519},[516,1506,523],{"class":522},[516,1508,527],{"class":526},[516,1510,537],{"class":530},[516,1512,540],{"class":526},[516,1514,543],{"class":522},[516,1516,546],{"class":526},[516,1518,550],{"class":549},[516,1520,553],{"class":526},[516,1522,1523],{"class":518,"line":556},[516,1524,560],{"emptyLinePlaceholder":559},[516,1526,1527,1531,1534,1536,1540,1542,1545,1548],{"class":518,"line":563},[516,1528,1530],{"class":1529},"spNyl","function",[516,1532,1533],{"class":566}," processWebhook",[516,1535,570],{"class":526},[516,1537,1539],{"class":1538},"sHdIc","payload",[516,1541,583],{"class":526},[516,1543,1544],{"class":821}," WebhookPayload",[516,1546,1547],{"class":526},")",[516,1549,1550],{"class":526}," {\n",[516,1552,1553,1556,1558,1560,1562,1564,1566,1568,1570,1573,1575,1577,1580,1582,1585,1587,1590,1592,1594,1596,1598,1600,1603,1605],{"class":518,"line":576},[516,1554,1555],{"class":530},"  log",[516,1557,484],{"class":526},[516,1559,487],{"class":566},[516,1561,570],{"class":579},[516,1563,905],{"class":526},[516,1565,908],{"class":579},[516,1567,583],{"class":526},[516,1569,546],{"class":526},[516,1571,1572],{"class":549},"webhook_received",[516,1574,598],{"class":526},[516,1576,534],{"class":526},[516,1578,1579],{"class":579}," type",[516,1581,583],{"class":526},[516,1583,1584],{"class":530}," payload",[516,1586,484],{"class":526},[516,1588,1589],{"class":530},"type",[516,1591,534],{"class":526},[516,1593,988],{"class":579},[516,1595,583],{"class":526},[516,1597,1584],{"class":530},[516,1599,484],{"class":526},[516,1601,1602],{"class":530},"source",[516,1604,540],{"class":526},[516,1606,610],{"class":579},[516,1608,1609],{"class":518,"line":604},[516,1610,560],{"emptyLinePlaceholder":559},[516,1612,1613,1616,1619,1622,1625,1627,1629,1632],{"class":518,"line":613},[516,1614,1615],{"class":522},"  if",[516,1617,1618],{"class":579}," (",[516,1620,1621],{"class":526},"!",[516,1623,1624],{"class":566},"isValid",[516,1626,570],{"class":579},[516,1628,1539],{"class":530},[516,1630,1631],{"class":579},")) ",[516,1633,573],{"class":526},[516,1635,1636,1639,1641,1643,1645,1647,1649,1651,1653,1656,1658,1660,1662,1664,1666,1668,1670,1672,1675,1677,1679,1682,1684,1686],{"class":518,"line":618},[516,1637,1638],{"class":530},"    log",[516,1640,484],{"class":526},[516,1642,730],{"class":566},[516,1644,570],{"class":579},[516,1646,905],{"class":526},[516,1648,908],{"class":579},[516,1650,583],{"class":526},[516,1652,546],{"class":526},[516,1654,1655],{"class":549},"webhook_invalid",[516,1657,598],{"class":526},[516,1659,534],{"class":526},[516,1661,1579],{"class":579},[516,1663,583],{"class":526},[516,1665,1584],{"class":530},[516,1667,484],{"class":526},[516,1669,1589],{"class":530},[516,1671,534],{"class":526},[516,1673,1674],{"class":579}," reason",[516,1676,583],{"class":526},[516,1678,546],{"class":526},[516,1680,1681],{"class":549},"missing_signature",[516,1683,598],{"class":526},[516,1685,540],{"class":526},[516,1687,610],{"class":579},[516,1689,1691],{"class":518,"line":1690},8,[516,1692,1693],{"class":522},"    return\n",[516,1695,1697],{"class":518,"line":1696},9,[516,1698,1699],{"class":526},"  }\n",[516,1701,1703],{"class":518,"line":1702},10,[516,1704,1705],{"class":526},"}\n",[498,1707,1709],{"id":1708},"drain-integration","Drain Integration",[460,1711,1712,1713,1716],{},"When using the object form, events are sent through the ",[478,1714,1715],{"href":358},"drain pipeline"," just like wide events:",[506,1718,1720],{"className":508,"code":1719,"filename":510,"language":511,"meta":512,"style":512},"import { initLogger, log } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({\n  env: { service: 'my-app' },\n  drain: createAxiomDrain(),\n})\n\nlog.info({ action: 'deploy', version: '1.2.3', region: 'us-east-1' })\n",[464,1721,1722,1744,1764,1768,1776,1796,1811,1817,1821],{"__ignoreMap":512},[516,1723,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742],{"class":518,"line":519},[516,1725,523],{"class":522},[516,1727,527],{"class":526},[516,1729,531],{"class":530},[516,1731,534],{"class":526},[516,1733,537],{"class":530},[516,1735,540],{"class":526},[516,1737,543],{"class":522},[516,1739,546],{"class":526},[516,1741,550],{"class":549},[516,1743,553],{"class":526},[516,1745,1746,1748,1750,1753,1755,1757,1759,1762],{"class":518,"line":556},[516,1747,523],{"class":522},[516,1749,527],{"class":526},[516,1751,1752],{"class":530}," createAxiomDrain",[516,1754,540],{"class":526},[516,1756,543],{"class":522},[516,1758,546],{"class":526},[516,1760,1761],{"class":549},"evlog\u002Faxiom",[516,1763,553],{"class":526},[516,1765,1766],{"class":518,"line":563},[516,1767,560],{"emptyLinePlaceholder":559},[516,1769,1770,1772,1774],{"class":518,"line":576},[516,1771,567],{"class":566},[516,1773,570],{"class":530},[516,1775,573],{"class":526},[516,1777,1778,1780,1782,1784,1786,1788,1790,1792,1794],{"class":518,"line":604},[516,1779,580],{"class":579},[516,1781,583],{"class":526},[516,1783,527],{"class":526},[516,1785,588],{"class":579},[516,1787,583],{"class":526},[516,1789,546],{"class":526},[516,1791,595],{"class":549},[516,1793,598],{"class":526},[516,1795,601],{"class":526},[516,1797,1798,1801,1803,1805,1808],{"class":518,"line":613},[516,1799,1800],{"class":579},"  drain",[516,1802,583],{"class":526},[516,1804,1752],{"class":566},[516,1806,1807],{"class":530},"()",[516,1809,1810],{"class":526},",\n",[516,1812,1813,1815],{"class":518,"line":618},[516,1814,607],{"class":526},[516,1816,610],{"class":530},[516,1818,1819],{"class":518,"line":1690},[516,1820,560],{"emptyLinePlaceholder":559},[516,1822,1823,1825,1827,1829,1831,1833,1835,1837,1839,1842,1844,1846,1849,1851,1853,1856,1858,1860,1863,1865,1867,1870,1872,1874],{"class":518,"line":1696},[516,1824,466],{"class":530},[516,1826,484],{"class":526},[516,1828,487],{"class":566},[516,1830,570],{"class":530},[516,1832,905],{"class":526},[516,1834,908],{"class":579},[516,1836,583],{"class":526},[516,1838,546],{"class":526},[516,1840,1841],{"class":549},"deploy",[516,1843,598],{"class":526},[516,1845,534],{"class":526},[516,1847,1848],{"class":579}," version",[516,1850,583],{"class":526},[516,1852,546],{"class":526},[516,1854,1855],{"class":549},"1.2.3",[516,1857,598],{"class":526},[516,1859,534],{"class":526},[516,1861,1862],{"class":579}," region",[516,1864,583],{"class":526},[516,1866,546],{"class":526},[516,1868,1869],{"class":549},"us-east-1",[516,1871,598],{"class":526},[516,1873,540],{"class":526},[516,1875,610],{"class":530},[498,1877,1879],{"id":1878},"migrating-from-console-pino-consola-winston","Migrating from console \u002F pino \u002F consola \u002F winston",[460,1881,1882,1883,1886,1887,1890],{},"Pick the tab matching your current logger to see the ",[493,1884,1885],{},"before"," call style. The ",[493,1888,1889],{},"after (evlog)"," snippet underneath is the same regardless of where you came from.",[1892,1893,1894,2114,2387,2573],"code-group",{},[506,1895,1898],{"className":508,"code":1896,"filename":1897,"language":511,"meta":512,"style":512},"import pino from 'pino'\n\nconst log = pino({ name: 'checkout' })\n\nlog.info({ event: 'checkout_started' })\nlog.info({ event: 'cart_loaded', items: 3, total: 9999 })\nlog.warn({ event: 'inventory_low', sku: 'SKU-42' })\nlog.error({ event: 'payment_failed', reason: 'card_declined' })\n","pino",[464,1899,1900,1916,1920,1954,1958,1986,2033,2074],{"__ignoreMap":512},[516,1901,1902,1904,1907,1910,1912,1914],{"class":518,"line":519},[516,1903,523],{"class":522},[516,1905,1906],{"class":530}," pino ",[516,1908,1909],{"class":522},"from",[516,1911,546],{"class":526},[516,1913,1897],{"class":549},[516,1915,553],{"class":526},[516,1917,1918],{"class":518,"line":556},[516,1919,560],{"emptyLinePlaceholder":559},[516,1921,1922,1925,1928,1931,1934,1936,1938,1941,1943,1945,1948,1950,1952],{"class":518,"line":563},[516,1923,1924],{"class":1529},"const",[516,1926,1927],{"class":530}," log ",[516,1929,1930],{"class":526},"=",[516,1932,1933],{"class":566}," pino",[516,1935,570],{"class":530},[516,1937,905],{"class":526},[516,1939,1940],{"class":579}," name",[516,1942,583],{"class":526},[516,1944,546],{"class":526},[516,1946,1947],{"class":549},"checkout",[516,1949,598],{"class":526},[516,1951,540],{"class":526},[516,1953,610],{"class":530},[516,1955,1956],{"class":518,"line":576},[516,1957,560],{"emptyLinePlaceholder":559},[516,1959,1960,1962,1964,1966,1968,1970,1973,1975,1977,1980,1982,1984],{"class":518,"line":604},[516,1961,466],{"class":530},[516,1963,484],{"class":526},[516,1965,487],{"class":566},[516,1967,570],{"class":530},[516,1969,905],{"class":526},[516,1971,1972],{"class":579}," event",[516,1974,583],{"class":526},[516,1976,546],{"class":526},[516,1978,1979],{"class":549},"checkout_started",[516,1981,598],{"class":526},[516,1983,540],{"class":526},[516,1985,610],{"class":530},[516,1987,1988,1990,1992,1994,1996,1998,2000,2002,2004,2007,2009,2011,2014,2016,2019,2021,2024,2026,2029,2031],{"class":518,"line":613},[516,1989,466],{"class":530},[516,1991,484],{"class":526},[516,1993,487],{"class":566},[516,1995,570],{"class":530},[516,1997,905],{"class":526},[516,1999,1972],{"class":579},[516,2001,583],{"class":526},[516,2003,546],{"class":526},[516,2005,2006],{"class":549},"cart_loaded",[516,2008,598],{"class":526},[516,2010,534],{"class":526},[516,2012,2013],{"class":579}," items",[516,2015,583],{"class":526},[516,2017,2018],{"class":927}," 3",[516,2020,534],{"class":526},[516,2022,2023],{"class":579}," total",[516,2025,583],{"class":526},[516,2027,2028],{"class":927}," 9999",[516,2030,540],{"class":526},[516,2032,610],{"class":530},[516,2034,2035,2037,2039,2041,2043,2045,2047,2049,2051,2054,2056,2058,2061,2063,2065,2068,2070,2072],{"class":518,"line":618},[516,2036,466],{"class":530},[516,2038,484],{"class":526},[516,2040,730],{"class":566},[516,2042,570],{"class":530},[516,2044,905],{"class":526},[516,2046,1972],{"class":579},[516,2048,583],{"class":526},[516,2050,546],{"class":526},[516,2052,2053],{"class":549},"inventory_low",[516,2055,598],{"class":526},[516,2057,534],{"class":526},[516,2059,2060],{"class":579}," sku",[516,2062,583],{"class":526},[516,2064,546],{"class":526},[516,2066,2067],{"class":549},"SKU-42",[516,2069,598],{"class":526},[516,2071,540],{"class":526},[516,2073,610],{"class":530},[516,2075,2076,2078,2080,2082,2084,2086,2088,2090,2092,2095,2097,2099,2101,2103,2105,2108,2110,2112],{"class":518,"line":1690},[516,2077,466],{"class":530},[516,2079,484],{"class":526},[516,2081,759],{"class":566},[516,2083,570],{"class":530},[516,2085,905],{"class":526},[516,2087,1972],{"class":579},[516,2089,583],{"class":526},[516,2091,546],{"class":526},[516,2093,2094],{"class":549},"payment_failed",[516,2096,598],{"class":526},[516,2098,534],{"class":526},[516,2100,1674],{"class":579},[516,2102,583],{"class":526},[516,2104,546],{"class":526},[516,2106,2107],{"class":549},"card_declined",[516,2109,598],{"class":526},[516,2111,540],{"class":526},[516,2113,610],{"class":530},[506,2115,2118],{"className":508,"code":2116,"filename":2117,"language":511,"meta":512,"style":512},"import { createLogger, format, transports } from 'winston'\n\nconst log = createLogger({\n  defaultMeta: { service: 'checkout' },\n  format: format.json(),\n  transports: [new transports.Console()],\n})\n\nlog.info({ event: 'checkout_started' })\nlog.info({ event: 'cart_loaded', items: 3, total: 9999 })\nlog.warn({ event: 'inventory_low', sku: 'SKU-42' })\nlog.error({ event: 'payment_failed', reason: 'card_declined' })\n","winston",[464,2119,2120,2149,2153,2167,2188,2206,2231,2237,2241,2267,2309,2348],{"__ignoreMap":512},[516,2121,2122,2124,2126,2129,2131,2134,2136,2139,2141,2143,2145,2147],{"class":518,"line":519},[516,2123,523],{"class":522},[516,2125,527],{"class":526},[516,2127,2128],{"class":530}," createLogger",[516,2130,534],{"class":526},[516,2132,2133],{"class":530}," format",[516,2135,534],{"class":526},[516,2137,2138],{"class":530}," transports",[516,2140,540],{"class":526},[516,2142,543],{"class":522},[516,2144,546],{"class":526},[516,2146,2117],{"class":549},[516,2148,553],{"class":526},[516,2150,2151],{"class":518,"line":556},[516,2152,560],{"emptyLinePlaceholder":559},[516,2154,2155,2157,2159,2161,2163,2165],{"class":518,"line":563},[516,2156,1924],{"class":1529},[516,2158,1927],{"class":530},[516,2160,1930],{"class":526},[516,2162,2128],{"class":566},[516,2164,570],{"class":530},[516,2166,573],{"class":526},[516,2168,2169,2172,2174,2176,2178,2180,2182,2184,2186],{"class":518,"line":576},[516,2170,2171],{"class":579},"  defaultMeta",[516,2173,583],{"class":526},[516,2175,527],{"class":526},[516,2177,588],{"class":579},[516,2179,583],{"class":526},[516,2181,546],{"class":526},[516,2183,1947],{"class":549},[516,2185,598],{"class":526},[516,2187,601],{"class":526},[516,2189,2190,2193,2195,2197,2199,2202,2204],{"class":518,"line":604},[516,2191,2192],{"class":579},"  format",[516,2194,583],{"class":526},[516,2196,2133],{"class":530},[516,2198,484],{"class":526},[516,2200,2201],{"class":566},"json",[516,2203,1807],{"class":530},[516,2205,1810],{"class":526},[516,2207,2208,2211,2213,2216,2219,2221,2223,2226,2229],{"class":518,"line":613},[516,2209,2210],{"class":579},"  transports",[516,2212,583],{"class":526},[516,2214,2215],{"class":530}," [",[516,2217,2218],{"class":526},"new",[516,2220,2138],{"class":530},[516,2222,484],{"class":526},[516,2224,2225],{"class":566},"Console",[516,2227,2228],{"class":530},"()]",[516,2230,1810],{"class":526},[516,2232,2233,2235],{"class":518,"line":618},[516,2234,607],{"class":526},[516,2236,610],{"class":530},[516,2238,2239],{"class":518,"line":1690},[516,2240,560],{"emptyLinePlaceholder":559},[516,2242,2243,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265],{"class":518,"line":1696},[516,2244,466],{"class":530},[516,2246,484],{"class":526},[516,2248,487],{"class":566},[516,2250,570],{"class":530},[516,2252,905],{"class":526},[516,2254,1972],{"class":579},[516,2256,583],{"class":526},[516,2258,546],{"class":526},[516,2260,1979],{"class":549},[516,2262,598],{"class":526},[516,2264,540],{"class":526},[516,2266,610],{"class":530},[516,2268,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307],{"class":518,"line":1702},[516,2270,466],{"class":530},[516,2272,484],{"class":526},[516,2274,487],{"class":566},[516,2276,570],{"class":530},[516,2278,905],{"class":526},[516,2280,1972],{"class":579},[516,2282,583],{"class":526},[516,2284,546],{"class":526},[516,2286,2006],{"class":549},[516,2288,598],{"class":526},[516,2290,534],{"class":526},[516,2292,2013],{"class":579},[516,2294,583],{"class":526},[516,2296,2018],{"class":927},[516,2298,534],{"class":526},[516,2300,2023],{"class":579},[516,2302,583],{"class":526},[516,2304,2028],{"class":927},[516,2306,540],{"class":526},[516,2308,610],{"class":530},[516,2310,2312,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346],{"class":518,"line":2311},11,[516,2313,466],{"class":530},[516,2315,484],{"class":526},[516,2317,730],{"class":566},[516,2319,570],{"class":530},[516,2321,905],{"class":526},[516,2323,1972],{"class":579},[516,2325,583],{"class":526},[516,2327,546],{"class":526},[516,2329,2053],{"class":549},[516,2331,598],{"class":526},[516,2333,534],{"class":526},[516,2335,2060],{"class":579},[516,2337,583],{"class":526},[516,2339,546],{"class":526},[516,2341,2067],{"class":549},[516,2343,598],{"class":526},[516,2345,540],{"class":526},[516,2347,610],{"class":530},[516,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379,2381,2383,2385],{"class":518,"line":2350},12,[516,2352,466],{"class":530},[516,2354,484],{"class":526},[516,2356,759],{"class":566},[516,2358,570],{"class":530},[516,2360,905],{"class":526},[516,2362,1972],{"class":579},[516,2364,583],{"class":526},[516,2366,546],{"class":526},[516,2368,2094],{"class":549},[516,2370,598],{"class":526},[516,2372,534],{"class":526},[516,2374,1674],{"class":579},[516,2376,583],{"class":526},[516,2378,546],{"class":526},[516,2380,2107],{"class":549},[516,2382,598],{"class":526},[516,2384,540],{"class":526},[516,2386,610],{"class":530},[506,2388,2391],{"className":508,"code":2389,"filename":2390,"language":511,"meta":512,"style":512},"import { consola } from 'consola'\n\nconst log = consola.withTag('checkout')\n\nlog.info('Starting checkout')\nlog.info('cart loaded', { items: 3, total: 9999 })\nlog.warn('inventory low', { sku: 'SKU-42' })\nlog.error('payment failed', { reason: 'card_declined' })\n","consola",[464,2392,2393,2412,2416,2441,2445,2464,2503,2538],{"__ignoreMap":512},[516,2394,2395,2397,2399,2402,2404,2406,2408,2410],{"class":518,"line":519},[516,2396,523],{"class":522},[516,2398,527],{"class":526},[516,2400,2401],{"class":530}," consola",[516,2403,540],{"class":526},[516,2405,543],{"class":522},[516,2407,546],{"class":526},[516,2409,2390],{"class":549},[516,2411,553],{"class":526},[516,2413,2414],{"class":518,"line":556},[516,2415,560],{"emptyLinePlaceholder":559},[516,2417,2418,2420,2422,2424,2426,2428,2431,2433,2435,2437,2439],{"class":518,"line":563},[516,2419,1924],{"class":1529},[516,2421,1927],{"class":530},[516,2423,1930],{"class":526},[516,2425,2401],{"class":530},[516,2427,484],{"class":526},[516,2429,2430],{"class":566},"withTag",[516,2432,570],{"class":530},[516,2434,598],{"class":526},[516,2436,1947],{"class":549},[516,2438,598],{"class":526},[516,2440,610],{"class":530},[516,2442,2443],{"class":518,"line":576},[516,2444,560],{"emptyLinePlaceholder":559},[516,2446,2447,2449,2451,2453,2455,2457,2460,2462],{"class":518,"line":604},[516,2448,466],{"class":530},[516,2450,484],{"class":526},[516,2452,487],{"class":566},[516,2454,570],{"class":530},[516,2456,598],{"class":526},[516,2458,2459],{"class":549},"Starting checkout",[516,2461,598],{"class":526},[516,2463,610],{"class":530},[516,2465,2466,2468,2470,2472,2474,2476,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501],{"class":518,"line":613},[516,2467,466],{"class":530},[516,2469,484],{"class":526},[516,2471,487],{"class":566},[516,2473,570],{"class":530},[516,2475,598],{"class":526},[516,2477,2478],{"class":549},"cart loaded",[516,2480,598],{"class":526},[516,2482,534],{"class":526},[516,2484,527],{"class":526},[516,2486,2013],{"class":579},[516,2488,583],{"class":526},[516,2490,2018],{"class":927},[516,2492,534],{"class":526},[516,2494,2023],{"class":579},[516,2496,583],{"class":526},[516,2498,2028],{"class":927},[516,2500,540],{"class":526},[516,2502,610],{"class":530},[516,2504,2505,2507,2509,2511,2513,2515,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536],{"class":518,"line":618},[516,2506,466],{"class":530},[516,2508,484],{"class":526},[516,2510,730],{"class":566},[516,2512,570],{"class":530},[516,2514,598],{"class":526},[516,2516,2517],{"class":549},"inventory low",[516,2519,598],{"class":526},[516,2521,534],{"class":526},[516,2523,527],{"class":526},[516,2525,2060],{"class":579},[516,2527,583],{"class":526},[516,2529,546],{"class":526},[516,2531,2067],{"class":549},[516,2533,598],{"class":526},[516,2535,540],{"class":526},[516,2537,610],{"class":530},[516,2539,2540,2542,2544,2546,2548,2550,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571],{"class":518,"line":1690},[516,2541,466],{"class":530},[516,2543,484],{"class":526},[516,2545,759],{"class":566},[516,2547,570],{"class":530},[516,2549,598],{"class":526},[516,2551,2552],{"class":549},"payment failed",[516,2554,598],{"class":526},[516,2556,534],{"class":526},[516,2558,527],{"class":526},[516,2560,1674],{"class":579},[516,2562,583],{"class":526},[516,2564,546],{"class":526},[516,2566,2107],{"class":549},[516,2568,598],{"class":526},[516,2570,540],{"class":526},[516,2572,610],{"class":530},[506,2574,2576],{"className":508,"code":2575,"filename":470,"language":511,"meta":512,"style":512},"console.log('[checkout] Starting checkout')\nconsole.log('[checkout] cart loaded', { items: 3, total: 9999 })\nconsole.warn('[checkout] inventory low', { sku: 'SKU-42' })\nconsole.error('[checkout] payment failed', { reason: 'card_declined' })\n",[464,2577,2578,2598,2637,2672],{"__ignoreMap":512},[516,2579,2580,2583,2585,2587,2589,2591,2594,2596],{"class":518,"line":519},[516,2581,2582],{"class":530},"console",[516,2584,484],{"class":526},[516,2586,466],{"class":566},[516,2588,570],{"class":530},[516,2590,598],{"class":526},[516,2592,2593],{"class":549},"[checkout] Starting checkout",[516,2595,598],{"class":526},[516,2597,610],{"class":530},[516,2599,2600,2602,2604,2606,2608,2610,2613,2615,2617,2619,2621,2623,2625,2627,2629,2631,2633,2635],{"class":518,"line":556},[516,2601,2582],{"class":530},[516,2603,484],{"class":526},[516,2605,466],{"class":566},[516,2607,570],{"class":530},[516,2609,598],{"class":526},[516,2611,2612],{"class":549},"[checkout] cart loaded",[516,2614,598],{"class":526},[516,2616,534],{"class":526},[516,2618,527],{"class":526},[516,2620,2013],{"class":579},[516,2622,583],{"class":526},[516,2624,2018],{"class":927},[516,2626,534],{"class":526},[516,2628,2023],{"class":579},[516,2630,583],{"class":526},[516,2632,2028],{"class":927},[516,2634,540],{"class":526},[516,2636,610],{"class":530},[516,2638,2639,2641,2643,2645,2647,2649,2652,2654,2656,2658,2660,2662,2664,2666,2668,2670],{"class":518,"line":563},[516,2640,2582],{"class":530},[516,2642,484],{"class":526},[516,2644,730],{"class":566},[516,2646,570],{"class":530},[516,2648,598],{"class":526},[516,2650,2651],{"class":549},"[checkout] inventory low",[516,2653,598],{"class":526},[516,2655,534],{"class":526},[516,2657,527],{"class":526},[516,2659,2060],{"class":579},[516,2661,583],{"class":526},[516,2663,546],{"class":526},[516,2665,2067],{"class":549},[516,2667,598],{"class":526},[516,2669,540],{"class":526},[516,2671,610],{"class":530},[516,2673,2674,2676,2678,2680,2682,2684,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705],{"class":518,"line":576},[516,2675,2582],{"class":530},[516,2677,484],{"class":526},[516,2679,759],{"class":566},[516,2681,570],{"class":530},[516,2683,598],{"class":526},[516,2685,2686],{"class":549},"[checkout] payment failed",[516,2688,598],{"class":526},[516,2690,534],{"class":526},[516,2692,527],{"class":526},[516,2694,1674],{"class":579},[516,2696,583],{"class":526},[516,2698,546],{"class":526},[516,2700,2107],{"class":549},[516,2702,598],{"class":526},[516,2704,540],{"class":526},[516,2706,610],{"class":530},[460,2708,2709],{},"All four become this — no formatter, transport, or peer-dep wiring required:",[506,2711,2714],{"className":508,"code":2712,"filename":2713,"language":511,"meta":512,"style":512},"import { initLogger, log } from 'evlog'\n\ninitLogger({ env: { service: 'checkout' } })\n\nlog.info({ event: 'checkout_started' })\nlog.info({ event: 'cart_loaded', items: 3, total: 9999 })\nlog.warn({ event: 'inventory_low', sku: 'SKU-42' })\nlog.error({ event: 'payment_failed', reason: 'card_declined' })\n","After (evlog)",[464,2715,2716,2738,2742,2773,2777,2803,2845,2883],{"__ignoreMap":512},[516,2717,2718,2720,2722,2724,2726,2728,2730,2732,2734,2736],{"class":518,"line":519},[516,2719,523],{"class":522},[516,2721,527],{"class":526},[516,2723,531],{"class":530},[516,2725,534],{"class":526},[516,2727,537],{"class":530},[516,2729,540],{"class":526},[516,2731,543],{"class":522},[516,2733,546],{"class":526},[516,2735,550],{"class":549},[516,2737,553],{"class":526},[516,2739,2740],{"class":518,"line":556},[516,2741,560],{"emptyLinePlaceholder":559},[516,2743,2744,2746,2748,2750,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771],{"class":518,"line":563},[516,2745,567],{"class":566},[516,2747,570],{"class":530},[516,2749,905],{"class":526},[516,2751,2752],{"class":579}," env",[516,2754,583],{"class":526},[516,2756,527],{"class":526},[516,2758,588],{"class":579},[516,2760,583],{"class":526},[516,2762,546],{"class":526},[516,2764,1947],{"class":549},[516,2766,598],{"class":526},[516,2768,540],{"class":526},[516,2770,540],{"class":526},[516,2772,610],{"class":530},[516,2774,2775],{"class":518,"line":576},[516,2776,560],{"emptyLinePlaceholder":559},[516,2778,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801],{"class":518,"line":604},[516,2780,466],{"class":530},[516,2782,484],{"class":526},[516,2784,487],{"class":566},[516,2786,570],{"class":530},[516,2788,905],{"class":526},[516,2790,1972],{"class":579},[516,2792,583],{"class":526},[516,2794,546],{"class":526},[516,2796,1979],{"class":549},[516,2798,598],{"class":526},[516,2800,540],{"class":526},[516,2802,610],{"class":530},[516,2804,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2837,2839,2841,2843],{"class":518,"line":613},[516,2806,466],{"class":530},[516,2808,484],{"class":526},[516,2810,487],{"class":566},[516,2812,570],{"class":530},[516,2814,905],{"class":526},[516,2816,1972],{"class":579},[516,2818,583],{"class":526},[516,2820,546],{"class":526},[516,2822,2006],{"class":549},[516,2824,598],{"class":526},[516,2826,534],{"class":526},[516,2828,2013],{"class":579},[516,2830,583],{"class":526},[516,2832,2018],{"class":927},[516,2834,534],{"class":526},[516,2836,2023],{"class":579},[516,2838,583],{"class":526},[516,2840,2028],{"class":927},[516,2842,540],{"class":526},[516,2844,610],{"class":530},[516,2846,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879,2881],{"class":518,"line":618},[516,2848,466],{"class":530},[516,2850,484],{"class":526},[516,2852,730],{"class":566},[516,2854,570],{"class":530},[516,2856,905],{"class":526},[516,2858,1972],{"class":579},[516,2860,583],{"class":526},[516,2862,546],{"class":526},[516,2864,2053],{"class":549},[516,2866,598],{"class":526},[516,2868,534],{"class":526},[516,2870,2060],{"class":579},[516,2872,583],{"class":526},[516,2874,546],{"class":526},[516,2876,2067],{"class":549},[516,2878,598],{"class":526},[516,2880,540],{"class":526},[516,2882,610],{"class":530},[516,2884,2885,2887,2889,2891,2893,2895,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917,2919],{"class":518,"line":1690},[516,2886,466],{"class":530},[516,2888,484],{"class":526},[516,2890,759],{"class":566},[516,2892,570],{"class":530},[516,2894,905],{"class":526},[516,2896,1972],{"class":579},[516,2898,583],{"class":526},[516,2900,546],{"class":526},[516,2902,2094],{"class":549},[516,2904,598],{"class":526},[516,2906,534],{"class":526},[516,2908,1674],{"class":579},[516,2910,583],{"class":526},[516,2912,546],{"class":526},[516,2914,2107],{"class":549},[516,2916,598],{"class":526},[516,2918,540],{"class":526},[516,2920,610],{"class":530},[460,2922,2923,2925,2926,2929],{},[464,2924,567],{}," is one line at boot. The drain, redaction, sampling, pretty\u002FJSON switching, and level filtering are all wired by default — no ",[464,2927,2928],{},"pino-pretty"," peer dep, no winston transport assembly, no consola reporter setup.",[473,2931,2933,2934,484],{"color":475,"icon":2932},"i-lucide-arrow-right","Want the full side-by-side (feature comparison tables, honest gaps, per-feature mapping)? See ",[478,2935,2936],{"href":31},"evlog vs pino, winston, consola",[498,2938,2940],{"id":2939},"pairing-with-wide-events","Pairing with wide events",[460,2942,2943,481,2945,2948,2949,2952,2953,2955],{},[464,2944,466],{},[464,2946,2947],{},"createLogger"," live inside the same logger. Use ",[464,2950,2951],{},"log.*"," for events that stand alone (startup messages, ad-hoc warnings, debug traces) and reach for ",[464,2954,2947],{}," when you want one event that captures an entire operation. They share the global drain, redaction, and types — pick per call.",[506,2957,2960],{"className":508,"code":2958,"filename":2959,"language":511,"meta":512,"style":512},"import { initLogger, log, createLogger } from 'evlog'\n\ninitLogger({ env: { service: 'sync-worker' } })\n\nlog.info('sync', 'Worker starting')\n\nconst run = createLogger({ source: 'postgres', target: 's3' })\ntry {\n  const records = await fetchRecords()\n  run.set({ found: records.length })\n\n  for (const record of records) {\n    await syncOne(record)\n    log.debug({ event: 'record_synced', id: record.id })\n  }\n\n  run.set({ status: 'complete', synced: records.length })\n} catch (err) {\n  log.error({ event: 'sync_failed' })\n  run.error(err as Error)\n  throw err\n} finally {\n  run.emit()\n}\n\nlog.info('sync', 'Worker finished')\n","scripts\u002Fsync-data.ts",[464,2961,2962,2988,2992,3023,3027,3055,3059,3100,3107,3127,3157,3161,3183,3199,3241,3246,3251,3293,3306,3333,3355,3364,3374,3386,3391,3396],{"__ignoreMap":512},[516,2963,2964,2966,2968,2970,2972,2974,2976,2978,2980,2982,2984,2986],{"class":518,"line":519},[516,2965,523],{"class":522},[516,2967,527],{"class":526},[516,2969,531],{"class":530},[516,2971,534],{"class":526},[516,2973,537],{"class":530},[516,2975,534],{"class":526},[516,2977,2128],{"class":530},[516,2979,540],{"class":526},[516,2981,543],{"class":522},[516,2983,546],{"class":526},[516,2985,550],{"class":549},[516,2987,553],{"class":526},[516,2989,2990],{"class":518,"line":556},[516,2991,560],{"emptyLinePlaceholder":559},[516,2993,2994,2996,2998,3000,3002,3004,3006,3008,3010,3012,3015,3017,3019,3021],{"class":518,"line":563},[516,2995,567],{"class":566},[516,2997,570],{"class":530},[516,2999,905],{"class":526},[516,3001,2752],{"class":579},[516,3003,583],{"class":526},[516,3005,527],{"class":526},[516,3007,588],{"class":579},[516,3009,583],{"class":526},[516,3011,546],{"class":526},[516,3013,3014],{"class":549},"sync-worker",[516,3016,598],{"class":526},[516,3018,540],{"class":526},[516,3020,540],{"class":526},[516,3022,610],{"class":530},[516,3024,3025],{"class":518,"line":576},[516,3026,560],{"emptyLinePlaceholder":559},[516,3028,3029,3031,3033,3035,3037,3039,3042,3044,3046,3048,3051,3053],{"class":518,"line":604},[516,3030,466],{"class":530},[516,3032,484],{"class":526},[516,3034,487],{"class":566},[516,3036,570],{"class":530},[516,3038,598],{"class":526},[516,3040,3041],{"class":549},"sync",[516,3043,598],{"class":526},[516,3045,534],{"class":526},[516,3047,546],{"class":526},[516,3049,3050],{"class":549},"Worker starting",[516,3052,598],{"class":526},[516,3054,610],{"class":530},[516,3056,3057],{"class":518,"line":613},[516,3058,560],{"emptyLinePlaceholder":559},[516,3060,3061,3063,3066,3068,3070,3072,3074,3076,3078,3080,3082,3084,3086,3088,3090,3092,3094,3096,3098],{"class":518,"line":618},[516,3062,1924],{"class":1529},[516,3064,3065],{"class":530}," run ",[516,3067,1930],{"class":526},[516,3069,2128],{"class":566},[516,3071,570],{"class":530},[516,3073,905],{"class":526},[516,3075,988],{"class":579},[516,3077,583],{"class":526},[516,3079,546],{"class":526},[516,3081,995],{"class":549},[516,3083,598],{"class":526},[516,3085,534],{"class":526},[516,3087,1002],{"class":579},[516,3089,583],{"class":526},[516,3091,546],{"class":526},[516,3093,1009],{"class":549},[516,3095,598],{"class":526},[516,3097,540],{"class":526},[516,3099,610],{"class":530},[516,3101,3102,3105],{"class":518,"line":1690},[516,3103,3104],{"class":522},"try",[516,3106,1550],{"class":526},[516,3108,3109,3112,3115,3118,3121,3124],{"class":518,"line":1696},[516,3110,3111],{"class":1529},"  const",[516,3113,3114],{"class":530}," records",[516,3116,3117],{"class":526}," =",[516,3119,3120],{"class":522}," await",[516,3122,3123],{"class":566}," fetchRecords",[516,3125,3126],{"class":579},"()\n",[516,3128,3129,3132,3134,3137,3139,3141,3144,3146,3148,3150,3153,3155],{"class":518,"line":1702},[516,3130,3131],{"class":530},"  run",[516,3133,484],{"class":526},[516,3135,3136],{"class":566},"set",[516,3138,570],{"class":579},[516,3140,905],{"class":526},[516,3142,3143],{"class":579}," found",[516,3145,583],{"class":526},[516,3147,3114],{"class":530},[516,3149,484],{"class":526},[516,3151,3152],{"class":530},"length",[516,3154,540],{"class":526},[516,3156,610],{"class":579},[516,3158,3159],{"class":518,"line":2311},[516,3160,560],{"emptyLinePlaceholder":559},[516,3162,3163,3166,3168,3170,3173,3176,3178,3181],{"class":518,"line":2350},[516,3164,3165],{"class":522},"  for",[516,3167,1618],{"class":579},[516,3169,1924],{"class":1529},[516,3171,3172],{"class":530}," record",[516,3174,3175],{"class":526}," of",[516,3177,3114],{"class":530},[516,3179,3180],{"class":579},") ",[516,3182,573],{"class":526},[516,3184,3186,3189,3192,3194,3197],{"class":518,"line":3185},13,[516,3187,3188],{"class":522},"    await",[516,3190,3191],{"class":566}," syncOne",[516,3193,570],{"class":579},[516,3195,3196],{"class":530},"record",[516,3198,610],{"class":579},[516,3200,3202,3204,3206,3208,3210,3212,3214,3216,3218,3221,3223,3225,3228,3230,3232,3234,3237,3239],{"class":518,"line":3201},14,[516,3203,1638],{"class":530},[516,3205,484],{"class":526},[516,3207,788],{"class":566},[516,3209,570],{"class":579},[516,3211,905],{"class":526},[516,3213,1972],{"class":579},[516,3215,583],{"class":526},[516,3217,546],{"class":526},[516,3219,3220],{"class":549},"record_synced",[516,3222,598],{"class":526},[516,3224,534],{"class":526},[516,3226,3227],{"class":579}," id",[516,3229,583],{"class":526},[516,3231,3172],{"class":530},[516,3233,484],{"class":526},[516,3235,3236],{"class":530},"id",[516,3238,540],{"class":526},[516,3240,610],{"class":579},[516,3242,3244],{"class":518,"line":3243},15,[516,3245,1699],{"class":526},[516,3247,3249],{"class":518,"line":3248},16,[516,3250,560],{"emptyLinePlaceholder":559},[516,3252,3254,3256,3258,3260,3262,3264,3267,3269,3271,3274,3276,3278,3281,3283,3285,3287,3289,3291],{"class":518,"line":3253},17,[516,3255,3131],{"class":530},[516,3257,484],{"class":526},[516,3259,3136],{"class":566},[516,3261,570],{"class":579},[516,3263,905],{"class":526},[516,3265,3266],{"class":579}," status",[516,3268,583],{"class":526},[516,3270,546],{"class":526},[516,3272,3273],{"class":549},"complete",[516,3275,598],{"class":526},[516,3277,534],{"class":526},[516,3279,3280],{"class":579}," synced",[516,3282,583],{"class":526},[516,3284,3114],{"class":530},[516,3286,484],{"class":526},[516,3288,3152],{"class":530},[516,3290,540],{"class":526},[516,3292,610],{"class":579},[516,3294,3296,3298,3301,3304],{"class":518,"line":3295},18,[516,3297,607],{"class":526},[516,3299,3300],{"class":522}," catch",[516,3302,3303],{"class":530}," (err) ",[516,3305,573],{"class":526},[516,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3327,3329,3331],{"class":518,"line":3308},19,[516,3310,1555],{"class":530},[516,3312,484],{"class":526},[516,3314,759],{"class":566},[516,3316,570],{"class":579},[516,3318,905],{"class":526},[516,3320,1972],{"class":579},[516,3322,583],{"class":526},[516,3324,546],{"class":526},[516,3326,981],{"class":549},[516,3328,598],{"class":526},[516,3330,540],{"class":526},[516,3332,610],{"class":579},[516,3334,3336,3338,3340,3342,3344,3347,3350,3353],{"class":518,"line":3335},20,[516,3337,3131],{"class":530},[516,3339,484],{"class":526},[516,3341,759],{"class":566},[516,3343,570],{"class":579},[516,3345,3346],{"class":530},"err",[516,3348,3349],{"class":522}," as",[516,3351,3352],{"class":821}," Error",[516,3354,610],{"class":579},[516,3356,3358,3361],{"class":518,"line":3357},21,[516,3359,3360],{"class":522},"  throw",[516,3362,3363],{"class":530}," err\n",[516,3365,3367,3369,3372],{"class":518,"line":3366},22,[516,3368,607],{"class":526},[516,3370,3371],{"class":522}," finally",[516,3373,1550],{"class":526},[516,3375,3377,3379,3381,3384],{"class":518,"line":3376},23,[516,3378,3131],{"class":530},[516,3380,484],{"class":526},[516,3382,3383],{"class":566},"emit",[516,3385,3126],{"class":579},[516,3387,3389],{"class":518,"line":3388},24,[516,3390,1705],{"class":526},[516,3392,3394],{"class":518,"line":3393},25,[516,3395,560],{"emptyLinePlaceholder":559},[516,3397,3399,3401,3403,3405,3407,3409,3411,3413,3415,3417,3420,3422],{"class":518,"line":3398},26,[516,3400,466],{"class":530},[516,3402,484],{"class":526},[516,3404,487],{"class":566},[516,3406,570],{"class":530},[516,3408,598],{"class":526},[516,3410,3041],{"class":549},[516,3412,598],{"class":526},[516,3414,534],{"class":526},[516,3416,546],{"class":526},[516,3418,3419],{"class":549},"Worker finished",[516,3421,598],{"class":526},[516,3423,610],{"class":530},[460,3425,462,3426,3428,3429,3431],{},[464,3427,2951],{}," calls give you a real-time trail in development; the ",[464,3430,2947],{}," block gives your dashboard one queryable row per run. Both go through the same drain.",[498,3433,3435],{"id":3434},"next-steps","Next Steps",[3437,3438,3439,3445,3461,3469,3474,3479],"ul",{},[3440,3441,3442,3444],"li",{},[478,3443,51],{"href":52},": Accumulate context and emit comprehensive events",[3440,3446,3447,3449,3450,3453,3454,3457,3458],{},[478,3448,56],{"href":57},": Throw errors with ",[464,3451,3452],{},"why",", ",[464,3455,3456],{},"fix",", and ",[464,3459,3460],{},"link",[3440,3462,3463,3465,3466,3468],{},[478,3464,170],{"href":171},": All ",[464,3467,567],{}," options",[3440,3470,3471,3473],{},[478,3472,353],{"href":358},": Send events to Axiom, Sentry, PostHog, and more",[3440,3475,3476,3478],{},[478,3477,480],{"href":272},": Scripts, workers, and libraries without a web framework",[3440,3480,3481,3484],{},[478,3482,3483],{"href":31},"evlog vs other loggers",": Side-by-side with pino, winston, consola",[3486,3487,3488],"style",{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":512,"searchDepth":556,"depth":556,"links":3490},[3491,3492,3496,3497,3502,3503,3504,3505],{"id":500,"depth":556,"text":501},{"id":657,"depth":556,"text":658,"children":3493},[3494,3495],{"id":662,"depth":563,"text":663},{"id":861,"depth":563,"text":862},{"id":1099,"depth":556,"text":1100},{"id":1196,"depth":556,"text":1197,"children":3498},[3499,3500,3501],{"id":1200,"depth":563,"text":1201},{"id":1350,"depth":563,"text":1351},{"id":1495,"depth":563,"text":1496},{"id":1708,"depth":556,"text":1709},{"id":1878,"depth":556,"text":1879},{"id":2939,"depth":556,"text":2940},{"id":3434,"depth":556,"text":3435},"evlog's general-purpose logger. A drop-in for console.log, pino, or consola, with the same level filtering, drain pipeline, redaction, and pretty\u002FJSON output as wide events.","md",[3509,3511],{"label":51,"icon":54,"to":52,"color":475,"variant":3510},"subtle",{"label":170,"icon":173,"to":171,"color":475,"variant":3510},{},{"icon":49},{"title":46,"description":3506},"b4WSvXB2y7I1qjixzhS4lcp35Ue4t1FgVLa0fG7ZrHs",[3517,3519],{"title":41,"path":42,"stem":43,"description":3518,"icon":44,"children":-1},"evlog gives you three ways to log. Simple one-liners, wide events that accumulate context, and auto-managed request logging. Choose the right one for your use case.",{"title":51,"path":52,"stem":53,"description":3520,"icon":54,"children":-1},"Accumulate context over any unit of work and emit a single comprehensive event. Works for HTTP requests, scripts, background jobs, queue workers, and workflows.",1778340161853]