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