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