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