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