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