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