[{"data":1,"prerenderedAt":3199},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-quick-start":429,"-getting-started-quick-start-surround":3194},[4,35,159,201,289,326,413],{"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,312,317,321],{"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 API","\u002Fbuild-on-top\u002Fstream-api","5.build-on-top\u002F1.stream-api","i-lucide-radio-tower",{"title":303,"path":304,"stem":305,"icon":306},"Stream server","\u002Fbuild-on-top\u002Fstream-server","5.build-on-top\u002F2.stream-server","i-lucide-radio",{"title":308,"path":309,"stem":310,"icon":311},"FS reader","\u002Fbuild-on-top\u002Ffs-reader","5.build-on-top\u002F3.fs-reader","i-lucide-folder-search",{"title":313,"path":314,"stem":315,"icon":316},"Identity headers","\u002Fbuild-on-top\u002Fidentity-headers","5.build-on-top\u002F4.identity-headers","i-lucide-fingerprint",{"title":156,"path":318,"stem":319,"icon":320},"\u002Fbuild-on-top\u002Frecipes","5.build-on-top\u002F5.recipes","i-lucide-chef-hat",{"title":322,"path":323,"stem":324,"icon":325},"Catalogs as packages","\u002Fbuild-on-top\u002Fcatalogs-as-packages","5.build-on-top\u002F6.catalogs-as-packages","i-lucide-package",{"title":327,"path":328,"stem":329,"children":330,"page":34},"Adapters","\u002Fadapters","6.adapters",[331,334,374,389],{"title":41,"path":332,"stem":333,"icon":44},"\u002Fadapters\u002Foverview","6.adapters\u002F01.overview",{"title":335,"path":336,"stem":337,"children":338,"page":34},"Cloud destinations","\u002Fadapters\u002Fcloud","6.adapters\u002F02.cloud",[339,344,349,354,359,364,369],{"title":340,"path":341,"stem":342,"icon":343},"Axiom","\u002Fadapters\u002Fcloud\u002Faxiom","6.adapters\u002F02.cloud\u002F01.axiom","i-custom-axiom",{"title":345,"path":346,"stem":347,"icon":348},"OTLP","\u002Fadapters\u002Fcloud\u002Fotlp","6.adapters\u002F02.cloud\u002F02.otlp","i-simple-icons-opentelemetry",{"title":350,"path":351,"stem":352,"icon":353},"PostHog","\u002Fadapters\u002Fcloud\u002Fposthog","6.adapters\u002F02.cloud\u002F03.posthog","i-simple-icons-posthog",{"title":355,"path":356,"stem":357,"icon":358},"Sentry","\u002Fadapters\u002Fcloud\u002Fsentry","6.adapters\u002F02.cloud\u002F04.sentry","i-simple-icons-sentry",{"title":360,"path":361,"stem":362,"icon":363},"Better Stack","\u002Fadapters\u002Fcloud\u002Fbetter-stack","6.adapters\u002F02.cloud\u002F05.better-stack","i-simple-icons-betterstack",{"title":365,"path":366,"stem":367,"icon":368},"Datadog","\u002Fadapters\u002Fcloud\u002Fdatadog","6.adapters\u002F02.cloud\u002F06.datadog","i-simple-icons-datadog",{"title":370,"path":371,"stem":372,"icon":373},"HyperDX","\u002Fadapters\u002Fcloud\u002Fhyperdx","6.adapters\u002F02.cloud\u002F07.hyperdx","i-custom-hyperdx",{"title":375,"path":376,"stem":377,"children":378,"page":34},"Self-hosted","\u002Fadapters\u002Fself-hosted","6.adapters\u002F03.self-hosted",[379,384],{"title":380,"path":381,"stem":382,"icon":383},"File System","\u002Fadapters\u002Fself-hosted\u002Ffs","6.adapters\u002F03.self-hosted\u002F01.fs","i-lucide-hard-drive",{"title":385,"path":386,"stem":387,"icon":388},"NuxtHub","\u002Fadapters\u002Fself-hosted\u002Fnuxthub","6.adapters\u002F03.self-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":390,"path":391,"stem":392,"children":393,"page":34},"Building blocks","\u002Fadapters\u002Fbuilding-blocks","6.adapters\u002F04.building-blocks",[394,399,404,408],{"title":395,"path":396,"stem":397,"icon":398},"Pipeline","\u002Fadapters\u002Fbuilding-blocks\u002Fpipeline","6.adapters\u002F04.building-blocks\u002F01.pipeline","i-lucide-workflow",{"title":400,"path":401,"stem":402,"icon":403},"HTTP","\u002Fadapters\u002Fbuilding-blocks\u002Fhttp","6.adapters\u002F04.building-blocks\u002F02.http","i-lucide-globe",{"title":405,"path":406,"stem":407,"icon":83},"Custom Adapters","\u002Fadapters\u002Fbuilding-blocks\u002Fcustom","6.adapters\u002F04.building-blocks\u002F03.custom",{"title":409,"path":410,"stem":411,"icon":412},"Toolkit","\u002Fadapters\u002Fbuilding-blocks\u002Ftoolkit","6.adapters\u002F04.building-blocks\u002F04.toolkit","i-lucide-blocks",{"title":414,"path":415,"stem":416,"children":417,"page":34},"Enrichers","\u002Fenrichers","7.enrichers",[418,421,425],{"title":41,"path":419,"stem":420,"icon":28},"\u002Fenrichers\u002Foverview","7.enrichers\u002F1.overview",{"title":422,"path":423,"stem":424,"icon":288},"Built-in","\u002Fenrichers\u002Fbuilt-in","7.enrichers\u002F2.built-in",{"title":426,"path":427,"stem":428,"icon":83},"Custom","\u002Fenrichers\u002Fcustom","7.enrichers\u002F3.custom",{"id":430,"title":20,"body":431,"description":3184,"extension":3185,"links":3186,"meta":3190,"navigation":3191,"path":21,"seo":3192,"stem":22,"__hash__":3193},"docs\u002F1.getting-started\u002F3.quick-start.md",{"type":432,"value":433,"toc":3170},"minimark",[434,438,463,507,512,515,728,731,752,760,764,774,1039,1059,1075,1148,1162,1166,1173,1502,1512,1517,1580,1584,1587,1592,1598,1788,1791,1838,1842,1847,1975,1988,1992,1998,2250,2254,2356,2360,2365,2727,2731,2737,3128,3134,3138,3166],[435,436,437],"p",{},"This guide covers the core APIs you'll use most often with evlog.",[439,440,442,443,447,448,452,453,452,456,452,459,462],"callout",{"color":441,"icon":28},"info","In Nuxt, evlog ",[444,445,446],"strong",{},"auto-imports"," all functions (",[449,450,451],"code",{},"useLogger",", ",[449,454,455],{},"log",[449,457,458],{},"createError",[449,460,461],{},"parseError","). No import statements needed.",[464,465,468,471,493],"prompt",{":actions":466,"description":467,"icon":23},"[\"copy\",\"cursor\",\"windsurf\"]","Get evlog running in 2 minutes",[435,469,470],{},"Get evlog running in my project in under 2 minutes.",[472,473,474,478,481,484,487,490],"ul",{},[475,476,477],"li",{},"Install evlog: pnpm add evlog",[475,479,480],{},"Detect my framework and wire up the matching integration",[475,482,483],{},"Set evlog.env.service to my app name",[475,485,486],{},"Add a single useLogger(event) call in a route handler with log.set({ ... })",[475,488,489],{},"Throw one createError({ message, status, why, fix }) for an invalid input case",[475,491,492],{},"Trigger the route locally and confirm a single wide event prints to the terminal",[435,494,495,496,502,503],{},"Docs: ",[497,498,499],"a",{"href":499,"rel":500},"https:\u002F\u002Fwww.evlog.dev\u002Fgetting-started\u002Fquick-start",[501],"nofollow","\nFrameworks: ",[497,504,505],{"href":505,"rel":506},"https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Foverview",[501],[508,509,511],"h2",{"id":510},"log-simple-logging","log (Simple Logging)",[435,513,514],{},"The simplest way to use evlog. Fire-and-forget structured logs, anywhere in your code:",[516,517,518,680],"code-group",{},[519,520,526],"pre",{"className":521,"code":522,"filename":523,"language":524,"meta":525,"style":525},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { log } from 'evlog'\n\nlog.info('auth', 'User logged in')\nlog.error({ action: 'payment', error: 'card_declined' })\nlog.warn('cache', 'Cache miss')\n","Server","typescript","",[449,527,528,561,568,603,650],{"__ignoreMap":525},[529,530,533,537,541,545,548,551,554,558],"span",{"class":531,"line":532},"line",1,[529,534,536],{"class":535},"s7zQu","import",[529,538,540],{"class":539},"sMK4o"," {",[529,542,544],{"class":543},"sTEyZ"," log",[529,546,547],{"class":539}," }",[529,549,550],{"class":535}," from",[529,552,553],{"class":539}," '",[529,555,557],{"class":556},"sfazB","evlog",[529,559,560],{"class":539},"'\n",[529,562,564],{"class":531,"line":563},2,[529,565,567],{"emptyLinePlaceholder":566},true,"\n",[529,569,571,573,576,579,582,585,588,590,593,595,598,600],{"class":531,"line":570},3,[529,572,455],{"class":543},[529,574,575],{"class":539},".",[529,577,441],{"class":578},"s2Zo4",[529,580,581],{"class":543},"(",[529,583,584],{"class":539},"'",[529,586,587],{"class":556},"auth",[529,589,584],{"class":539},[529,591,592],{"class":539},",",[529,594,553],{"class":539},[529,596,597],{"class":556},"User logged in",[529,599,584],{"class":539},[529,601,602],{"class":543},")\n",[529,604,606,608,610,613,615,618,622,625,627,630,632,634,637,639,641,644,646,648],{"class":531,"line":605},4,[529,607,455],{"class":543},[529,609,575],{"class":539},[529,611,612],{"class":578},"error",[529,614,581],{"class":543},[529,616,617],{"class":539},"{",[529,619,621],{"class":620},"swJcz"," action",[529,623,624],{"class":539},":",[529,626,553],{"class":539},[529,628,629],{"class":556},"payment",[529,631,584],{"class":539},[529,633,592],{"class":539},[529,635,636],{"class":620}," error",[529,638,624],{"class":539},[529,640,553],{"class":539},[529,642,643],{"class":556},"card_declined",[529,645,584],{"class":539},[529,647,547],{"class":539},[529,649,602],{"class":543},[529,651,653,655,657,660,662,664,667,669,671,673,676,678],{"class":531,"line":652},5,[529,654,455],{"class":543},[529,656,575],{"class":539},[529,658,659],{"class":578},"warn",[529,661,581],{"class":543},[529,663,584],{"class":539},[529,665,666],{"class":556},"cache",[529,668,584],{"class":539},[529,670,592],{"class":539},[529,672,553],{"class":539},[529,674,675],{"class":556},"Cache miss",[529,677,584],{"class":539},[529,679,602],{"class":543},[519,681,686],{"className":682,"code":683,"filename":684,"language":685,"meta":525,"style":525},"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 ERROR [my-app] action=payment error=card_declined\n10:23:45.614 [cache] Cache miss\n","Output","bash",[449,687,688,697,720],{"__ignoreMap":525},[529,689,690,694],{"class":531,"line":532},[529,691,693],{"class":692},"sBMFI","10:23:45.612",[529,695,696],{"class":543}," [auth] User logged in\n",[529,698,699,702,705,708,711,713,715,717],{"class":531,"line":563},[529,700,701],{"class":692},"10:23:45.613",[529,703,704],{"class":556}," ERROR",[529,706,707],{"class":543}," [my-app] action",[529,709,710],{"class":539},"=",[529,712,629],{"class":556},[529,714,636],{"class":543},[529,716,710],{"class":539},[529,718,719],{"class":556},"card_declined\n",[529,721,722,725],{"class":531,"line":570},[529,723,724],{"class":692},"10:23:45.614",[529,726,727],{"class":543}," [cache] Cache miss\n",[435,729,730],{},"Two call styles:",[472,732,733,743],{},[475,734,735,738,739,742],{},[444,736,737],{},"Tagged",": ",[449,740,741],{},"log.info('tag', 'message')"," for quick, readable console output",[475,744,745,738,748,751],{},[444,746,747],{},"Structured",[449,749,750],{},"log.info({ key: value })"," for rich events that flow through the drain pipeline",[439,753,756,757,759],{"color":754,"icon":755},"neutral","i-lucide-arrow-right","See the full ",[497,758,46],{"href":47}," guide for all patterns and drain integration.",[508,761,763],{"id":762},"createlogger-wide-events","createLogger (Wide Events)",[435,765,766,767,770,771,624],{},"When you need to ",[444,768,769],{},"accumulate context"," across multiple steps of an operation, whether a script, background job, queue worker, or workflow, use ",[449,772,773],{},"createLogger",[516,775,776,982],{},[519,777,780],{"className":521,"code":778,"filename":779,"language":524,"meta":525,"style":525},"import { initLogger, createLogger } from 'evlog'\n\ninitLogger({ env: { service: 'sync-worker' } })\n\nconst log = createLogger({ jobId: job.id, queue: 'emails' })\n\nlog.set({ batch: { size: 50 } })\nlog.set({ batch: { processed: 50 } })\nlog.emit()\n","scripts\u002Fsync-job.ts",[449,781,782,806,810,844,848,896,901,937,969],{"__ignoreMap":525},[529,783,784,786,788,791,793,796,798,800,802,804],{"class":531,"line":532},[529,785,536],{"class":535},[529,787,540],{"class":539},[529,789,790],{"class":543}," initLogger",[529,792,592],{"class":539},[529,794,795],{"class":543}," createLogger",[529,797,547],{"class":539},[529,799,550],{"class":535},[529,801,553],{"class":539},[529,803,557],{"class":556},[529,805,560],{"class":539},[529,807,808],{"class":531,"line":563},[529,809,567],{"emptyLinePlaceholder":566},[529,811,812,815,817,819,822,824,826,829,831,833,836,838,840,842],{"class":531,"line":570},[529,813,814],{"class":578},"initLogger",[529,816,581],{"class":543},[529,818,617],{"class":539},[529,820,821],{"class":620}," env",[529,823,624],{"class":539},[529,825,540],{"class":539},[529,827,828],{"class":620}," service",[529,830,624],{"class":539},[529,832,553],{"class":539},[529,834,835],{"class":556},"sync-worker",[529,837,584],{"class":539},[529,839,547],{"class":539},[529,841,547],{"class":539},[529,843,602],{"class":543},[529,845,846],{"class":531,"line":605},[529,847,567],{"emptyLinePlaceholder":566},[529,849,850,854,857,859,861,863,865,868,870,873,875,878,880,883,885,887,890,892,894],{"class":531,"line":652},[529,851,853],{"class":852},"spNyl","const",[529,855,856],{"class":543}," log ",[529,858,710],{"class":539},[529,860,795],{"class":578},[529,862,581],{"class":543},[529,864,617],{"class":539},[529,866,867],{"class":620}," jobId",[529,869,624],{"class":539},[529,871,872],{"class":543}," job",[529,874,575],{"class":539},[529,876,877],{"class":543},"id",[529,879,592],{"class":539},[529,881,882],{"class":620}," queue",[529,884,624],{"class":539},[529,886,553],{"class":539},[529,888,889],{"class":556},"emails",[529,891,584],{"class":539},[529,893,547],{"class":539},[529,895,602],{"class":543},[529,897,899],{"class":531,"line":898},6,[529,900,567],{"emptyLinePlaceholder":566},[529,902,904,906,908,911,913,915,918,920,922,925,927,931,933,935],{"class":531,"line":903},7,[529,905,455],{"class":543},[529,907,575],{"class":539},[529,909,910],{"class":578},"set",[529,912,581],{"class":543},[529,914,617],{"class":539},[529,916,917],{"class":620}," batch",[529,919,624],{"class":539},[529,921,540],{"class":539},[529,923,924],{"class":620}," size",[529,926,624],{"class":539},[529,928,930],{"class":929},"sbssI"," 50",[529,932,547],{"class":539},[529,934,547],{"class":539},[529,936,602],{"class":543},[529,938,940,942,944,946,948,950,952,954,956,959,961,963,965,967],{"class":531,"line":939},8,[529,941,455],{"class":543},[529,943,575],{"class":539},[529,945,910],{"class":578},[529,947,581],{"class":543},[529,949,617],{"class":539},[529,951,917],{"class":620},[529,953,624],{"class":539},[529,955,540],{"class":539},[529,957,958],{"class":620}," processed",[529,960,624],{"class":539},[529,962,930],{"class":929},[529,964,547],{"class":539},[529,966,547],{"class":539},[529,968,602],{"class":543},[529,970,972,974,976,979],{"class":531,"line":971},9,[529,973,455],{"class":543},[529,975,575],{"class":539},[529,977,978],{"class":578},"emit",[529,980,981],{"class":543},"()\n",[519,983,986],{"className":682,"code":984,"filename":985,"language":685,"meta":525,"style":525},"10:23:45.612 INFO [sync-worker] in 1204ms\n  ├─ jobId: job_abc123\n  ├─ queue: emails\n  └─ batch: size=50 processed=50\n","Output (Pretty)",[449,987,988,998,1009,1019],{"__ignoreMap":525},[529,989,990,992,995],{"class":531,"line":532},[529,991,693],{"class":692},[529,993,994],{"class":556}," INFO",[529,996,997],{"class":543}," [sync-worker] in 1204ms\n",[529,999,1000,1003,1006],{"class":531,"line":563},[529,1001,1002],{"class":692},"  ├─",[529,1004,1005],{"class":556}," jobId:",[529,1007,1008],{"class":556}," job_abc123\n",[529,1010,1011,1013,1016],{"class":531,"line":570},[529,1012,1002],{"class":692},[529,1014,1015],{"class":556}," queue:",[529,1017,1018],{"class":556}," emails\n",[529,1020,1021,1024,1027,1030,1033,1036],{"class":531,"line":605},[529,1022,1023],{"class":692},"  └─",[529,1025,1026],{"class":556}," batch:",[529,1028,1029],{"class":556}," size=",[529,1031,1032],{"class":929},"50",[529,1034,1035],{"class":556}," processed=",[529,1037,1038],{"class":929},"50\n",[435,1040,1041,1044,1045,452,1047,452,1049,452,1051,452,1053,1055,1056,575],{},[449,1042,1043],{},"createLogger()"," accepts any initial context as a plain object. It returns a logger with ",[449,1046,910],{},[449,1048,612],{},[449,1050,441],{},[449,1052,659],{},[449,1054,978],{},", and ",[449,1057,1058],{},"getContext",[435,1060,1061,1062,1065,1066,452,1069,1055,1072,624],{},"For HTTP request contexts specifically, use ",[449,1063,1064],{},"createRequestLogger()"," which pre-populates ",[449,1067,1068],{},"method",[449,1070,1071],{},"path",[449,1073,1074],{},"requestId",[519,1076,1079],{"className":521,"code":1077,"filename":1078,"language":524,"meta":525,"style":525},"import { createRequestLogger } from 'evlog'\n\nconst log = createRequestLogger({ method: 'POST', path: '\u002Fapi\u002Fcheckout' })\n","src\u002Fworker.ts",[449,1080,1081,1100,1104],{"__ignoreMap":525},[529,1082,1083,1085,1087,1090,1092,1094,1096,1098],{"class":531,"line":532},[529,1084,536],{"class":535},[529,1086,540],{"class":539},[529,1088,1089],{"class":543}," createRequestLogger",[529,1091,547],{"class":539},[529,1093,550],{"class":535},[529,1095,553],{"class":539},[529,1097,557],{"class":556},[529,1099,560],{"class":539},[529,1101,1102],{"class":531,"line":563},[529,1103,567],{"emptyLinePlaceholder":566},[529,1105,1106,1108,1110,1112,1114,1116,1118,1121,1123,1125,1128,1130,1132,1135,1137,1139,1142,1144,1146],{"class":531,"line":570},[529,1107,853],{"class":852},[529,1109,856],{"class":543},[529,1111,710],{"class":539},[529,1113,1089],{"class":578},[529,1115,581],{"class":543},[529,1117,617],{"class":539},[529,1119,1120],{"class":620}," method",[529,1122,624],{"class":539},[529,1124,553],{"class":539},[529,1126,1127],{"class":556},"POST",[529,1129,584],{"class":539},[529,1131,592],{"class":539},[529,1133,1134],{"class":620}," path",[529,1136,624],{"class":539},[529,1138,553],{"class":539},[529,1140,1141],{"class":556},"\u002Fapi\u002Fcheckout",[529,1143,584],{"class":539},[529,1145,547],{"class":539},[529,1147,602],{"class":543},[439,1149,1150,1151,1153,1154,1157,1158,1161],{"color":441,"icon":13},"With ",[449,1152,773],{}," and ",[449,1155,1156],{},"createRequestLogger",", you must call ",[449,1159,1160],{},"log.emit()"," manually. In framework integrations, this happens automatically.",[508,1163,1165],{"id":1164},"uselogger-retrieve-the-request-logger","useLogger (Retrieve the Request Logger)",[435,1167,1168,1169,1172],{},"When using a framework integration (Nuxt, Hono, Express, etc.), the middleware automatically creates a wide event logger on request start and emits it on response end. ",[449,1170,1171],{},"useLogger(event)"," retrieves that logger from the request context:",[516,1174,1175,1443],{},[519,1176,1179],{"className":521,"code":1177,"filename":1178,"language":524,"meta":525,"style":525},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n\n  log.set({ user: { id: 1, plan: 'pro' } })\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  const order = await processCheckout()\n  log.set({ orderId: order.id })\n\n  return { success: true, orderId: order.id }\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[449,1180,1181,1200,1204,1236,1254,1258,1306,1349,1353,1370,1398,1403,1435],{"__ignoreMap":525},[529,1182,1183,1185,1187,1190,1192,1194,1196,1198],{"class":531,"line":532},[529,1184,536],{"class":535},[529,1186,540],{"class":539},[529,1188,1189],{"class":543}," useLogger",[529,1191,547],{"class":539},[529,1193,550],{"class":535},[529,1195,553],{"class":539},[529,1197,557],{"class":556},[529,1199,560],{"class":539},[529,1201,1202],{"class":531,"line":563},[529,1203,567],{"emptyLinePlaceholder":566},[529,1205,1206,1209,1212,1215,1217,1220,1223,1227,1230,1233],{"class":531,"line":570},[529,1207,1208],{"class":535},"export",[529,1210,1211],{"class":535}," default",[529,1213,1214],{"class":578}," defineEventHandler",[529,1216,581],{"class":543},[529,1218,1219],{"class":852},"async",[529,1221,1222],{"class":539}," (",[529,1224,1226],{"class":1225},"sHdIc","event",[529,1228,1229],{"class":539},")",[529,1231,1232],{"class":852}," =>",[529,1234,1235],{"class":539}," {\n",[529,1237,1238,1241,1243,1246,1248,1250,1252],{"class":531,"line":605},[529,1239,1240],{"class":852},"  const",[529,1242,544],{"class":543},[529,1244,1245],{"class":539}," =",[529,1247,1189],{"class":578},[529,1249,581],{"class":620},[529,1251,1226],{"class":543},[529,1253,602],{"class":620},[529,1255,1256],{"class":531,"line":652},[529,1257,567],{"emptyLinePlaceholder":566},[529,1259,1260,1263,1265,1267,1269,1271,1274,1276,1278,1281,1283,1286,1288,1291,1293,1295,1298,1300,1302,1304],{"class":531,"line":898},[529,1261,1262],{"class":543},"  log",[529,1264,575],{"class":539},[529,1266,910],{"class":578},[529,1268,581],{"class":620},[529,1270,617],{"class":539},[529,1272,1273],{"class":620}," user",[529,1275,624],{"class":539},[529,1277,540],{"class":539},[529,1279,1280],{"class":620}," id",[529,1282,624],{"class":539},[529,1284,1285],{"class":929}," 1",[529,1287,592],{"class":539},[529,1289,1290],{"class":620}," plan",[529,1292,624],{"class":539},[529,1294,553],{"class":539},[529,1296,1297],{"class":556},"pro",[529,1299,584],{"class":539},[529,1301,547],{"class":539},[529,1303,547],{"class":539},[529,1305,602],{"class":620},[529,1307,1308,1310,1312,1314,1316,1318,1321,1323,1325,1328,1330,1333,1335,1338,1340,1343,1345,1347],{"class":531,"line":903},[529,1309,1262],{"class":543},[529,1311,575],{"class":539},[529,1313,910],{"class":578},[529,1315,581],{"class":620},[529,1317,617],{"class":539},[529,1319,1320],{"class":620}," cart",[529,1322,624],{"class":539},[529,1324,540],{"class":539},[529,1326,1327],{"class":620}," items",[529,1329,624],{"class":539},[529,1331,1332],{"class":929}," 3",[529,1334,592],{"class":539},[529,1336,1337],{"class":620}," total",[529,1339,624],{"class":539},[529,1341,1342],{"class":929}," 9999",[529,1344,547],{"class":539},[529,1346,547],{"class":539},[529,1348,602],{"class":620},[529,1350,1351],{"class":531,"line":939},[529,1352,567],{"emptyLinePlaceholder":566},[529,1354,1355,1357,1360,1362,1365,1368],{"class":531,"line":971},[529,1356,1240],{"class":852},[529,1358,1359],{"class":543}," order",[529,1361,1245],{"class":539},[529,1363,1364],{"class":535}," await",[529,1366,1367],{"class":578}," processCheckout",[529,1369,981],{"class":620},[529,1371,1373,1375,1377,1379,1381,1383,1386,1388,1390,1392,1394,1396],{"class":531,"line":1372},10,[529,1374,1262],{"class":543},[529,1376,575],{"class":539},[529,1378,910],{"class":578},[529,1380,581],{"class":620},[529,1382,617],{"class":539},[529,1384,1385],{"class":620}," orderId",[529,1387,624],{"class":539},[529,1389,1359],{"class":543},[529,1391,575],{"class":539},[529,1393,877],{"class":543},[529,1395,547],{"class":539},[529,1397,602],{"class":620},[529,1399,1401],{"class":531,"line":1400},11,[529,1402,567],{"emptyLinePlaceholder":566},[529,1404,1406,1409,1411,1414,1416,1420,1422,1424,1426,1428,1430,1432],{"class":531,"line":1405},12,[529,1407,1408],{"class":535},"  return",[529,1410,540],{"class":539},[529,1412,1413],{"class":620}," success",[529,1415,624],{"class":539},[529,1417,1419],{"class":1418},"sfNiH"," true",[529,1421,592],{"class":539},[529,1423,1385],{"class":620},[529,1425,624],{"class":539},[529,1427,1359],{"class":543},[529,1429,575],{"class":539},[529,1431,877],{"class":543},[529,1433,1434],{"class":539}," }\n",[529,1436,1438,1441],{"class":531,"line":1437},13,[529,1439,1440],{"class":539},"}",[529,1442,602],{"class":543},[519,1444,1446],{"className":682,"code":1445,"filename":985,"language":685,"meta":525,"style":525},"10:23:45.612 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 234ms\n  ├─ user: id=1 plan=pro\n  ├─ cart: items=3 total=9999\n  └─ orderId: ord_abc123\n",[449,1447,1448,1457,1473,1492],{"__ignoreMap":525},[529,1449,1450,1452,1454],{"class":531,"line":532},[529,1451,693],{"class":692},[529,1453,994],{"class":556},[529,1455,1456],{"class":543}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 234ms\n",[529,1458,1459,1461,1464,1467,1470],{"class":531,"line":563},[529,1460,1002],{"class":692},[529,1462,1463],{"class":556}," user:",[529,1465,1466],{"class":556}," id=",[529,1468,1469],{"class":929},"1",[529,1471,1472],{"class":556}," plan=pro\n",[529,1474,1475,1477,1480,1483,1486,1489],{"class":531,"line":570},[529,1476,1002],{"class":692},[529,1478,1479],{"class":556}," cart:",[529,1481,1482],{"class":556}," items=",[529,1484,1485],{"class":929},"3",[529,1487,1488],{"class":556}," total=",[529,1490,1491],{"class":929},"9999\n",[529,1493,1494,1496,1499],{"class":531,"line":605},[529,1495,1023],{"class":692},[529,1497,1498],{"class":556}," orderId:",[529,1500,1501],{"class":556}," ord_abc123\n",[439,1503,1506,1508,1509,575],{"color":1504,"icon":1505},"success","i-lucide-check",[449,1507,451],{}," doesn't create a logger, the framework middleware already did that. It just retrieves it from the event context so you can add data with ",[449,1510,1511],{},"set()",[1513,1514,1516],"h3",{"id":1515},"when-to-use-what","When to use what",[1518,1519,1520,1543],"table",{},[1521,1522,1523],"thead",{},[1524,1525,1526,1532,1539],"tr",{},[1527,1528,1529,1530],"th",{},"Use ",[449,1531,455],{},[1527,1533,1529,1534,1536,1537],{},[449,1535,1043],{}," \u002F ",[449,1538,1064],{},[1527,1540,1529,1541],{},[449,1542,1171],{},[1544,1545,1546,1558,1569],"tbody",{},[1524,1547,1548,1552,1555],{},[1549,1550,1551],"td",{},"Quick one-off events",[1549,1553,1554],{},"Scripts, jobs, workers, queues, HTTP without a framework",[1549,1556,1557],{},"API routes with a framework integration",[1524,1559,1560,1563,1566],{},[1549,1561,1562],{},"No context accumulation needed",[1549,1564,1565],{},"Accumulate context over an operation",[1549,1567,1568],{},"Retrieve the request-scoped logger",[1524,1570,1571,1574,1577],{},[1549,1572,1573],{},"Client-side logging",[1549,1575,1576],{},"Wide events (one log per operation)",[1549,1578,1579],{},"Access the auto-managed wide event",[1513,1581,1583],{"id":1582},"service-identification","Service Identification",[435,1585,1586],{},"In multi-service architectures, differentiate which service a log belongs to using either route-based configuration or explicit service names.",[1588,1589,1591],"h4",{"id":1590},"route-based-configuration","Route-Based Configuration",[435,1593,1594,1595,624],{},"Configure service names per route pattern in your ",[449,1596,1597],{},"nuxt.config.ts",[519,1599,1601],{"className":521,"code":1600,"filename":1597,"language":524,"meta":525,"style":525},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n\n  evlog: {\n    env: {\n      service: 'default-service',\n    },\n    routes: {\n      '\u002Fapi\u002Fauth\u002F**': { service: 'auth-service' },\n      '\u002Fapi\u002Fpayment\u002F**': { service: 'payment-service' },\n      '\u002Fapi\u002Fbooking\u002F**': { service: 'booking-service' },\n    },\n  },\n})\n",[449,1602,1603,1617,1640,1644,1653,1662,1678,1683,1692,1720,1746,1772,1776,1781],{"__ignoreMap":525},[529,1604,1605,1607,1609,1612,1614],{"class":531,"line":532},[529,1606,1208],{"class":535},[529,1608,1211],{"class":535},[529,1610,1611],{"class":578}," defineNuxtConfig",[529,1613,581],{"class":543},[529,1615,1616],{"class":539},"{\n",[529,1618,1619,1622,1624,1627,1629,1632,1634,1637],{"class":531,"line":563},[529,1620,1621],{"class":620},"  modules",[529,1623,624],{"class":539},[529,1625,1626],{"class":543}," [",[529,1628,584],{"class":539},[529,1630,1631],{"class":556},"evlog\u002Fnuxt",[529,1633,584],{"class":539},[529,1635,1636],{"class":543},"]",[529,1638,1639],{"class":539},",\n",[529,1641,1642],{"class":531,"line":570},[529,1643,567],{"emptyLinePlaceholder":566},[529,1645,1646,1649,1651],{"class":531,"line":605},[529,1647,1648],{"class":620},"  evlog",[529,1650,624],{"class":539},[529,1652,1235],{"class":539},[529,1654,1655,1658,1660],{"class":531,"line":652},[529,1656,1657],{"class":620},"    env",[529,1659,624],{"class":539},[529,1661,1235],{"class":539},[529,1663,1664,1667,1669,1671,1674,1676],{"class":531,"line":898},[529,1665,1666],{"class":620},"      service",[529,1668,624],{"class":539},[529,1670,553],{"class":539},[529,1672,1673],{"class":556},"default-service",[529,1675,584],{"class":539},[529,1677,1639],{"class":539},[529,1679,1680],{"class":531,"line":903},[529,1681,1682],{"class":539},"    },\n",[529,1684,1685,1688,1690],{"class":531,"line":939},[529,1686,1687],{"class":620},"    routes",[529,1689,624],{"class":539},[529,1691,1235],{"class":539},[529,1693,1694,1697,1700,1702,1704,1706,1708,1710,1712,1715,1717],{"class":531,"line":971},[529,1695,1696],{"class":539},"      '",[529,1698,1699],{"class":620},"\u002Fapi\u002Fauth\u002F**",[529,1701,584],{"class":539},[529,1703,624],{"class":539},[529,1705,540],{"class":539},[529,1707,828],{"class":620},[529,1709,624],{"class":539},[529,1711,553],{"class":539},[529,1713,1714],{"class":556},"auth-service",[529,1716,584],{"class":539},[529,1718,1719],{"class":539}," },\n",[529,1721,1722,1724,1727,1729,1731,1733,1735,1737,1739,1742,1744],{"class":531,"line":1372},[529,1723,1696],{"class":539},[529,1725,1726],{"class":620},"\u002Fapi\u002Fpayment\u002F**",[529,1728,584],{"class":539},[529,1730,624],{"class":539},[529,1732,540],{"class":539},[529,1734,828],{"class":620},[529,1736,624],{"class":539},[529,1738,553],{"class":539},[529,1740,1741],{"class":556},"payment-service",[529,1743,584],{"class":539},[529,1745,1719],{"class":539},[529,1747,1748,1750,1753,1755,1757,1759,1761,1763,1765,1768,1770],{"class":531,"line":1400},[529,1749,1696],{"class":539},[529,1751,1752],{"class":620},"\u002Fapi\u002Fbooking\u002F**",[529,1754,584],{"class":539},[529,1756,624],{"class":539},[529,1758,540],{"class":539},[529,1760,828],{"class":620},[529,1762,624],{"class":539},[529,1764,553],{"class":539},[529,1766,1767],{"class":556},"booking-service",[529,1769,584],{"class":539},[529,1771,1719],{"class":539},[529,1773,1774],{"class":531,"line":1405},[529,1775,1682],{"class":539},[529,1777,1778],{"class":531,"line":1437},[529,1779,1780],{"class":539},"  },\n",[529,1782,1784,1786],{"class":531,"line":1783},14,[529,1785,1440],{"class":539},[529,1787,602],{"class":543},[435,1789,1790],{},"Logs from routes matching these patterns will automatically include the configured service name:",[519,1792,1794],{"className":682,"code":1793,"filename":684,"language":685,"meta":525,"style":525},"21:57:10.442 INFO [auth-service] POST \u002Fapi\u002Fauth\u002Flogin 200 in 1ms\n  ├─ requestId: 88ced16a-bef2-4483-86cb-2b4fb677ea52\n  ├─ user: id=user_123 email=demo@example.com\n  └─ action: login\n",[449,1795,1796,1806,1816,1828],{"__ignoreMap":525},[529,1797,1798,1801,1803],{"class":531,"line":532},[529,1799,1800],{"class":692},"21:57:10.442",[529,1802,994],{"class":556},[529,1804,1805],{"class":543}," [auth-service] POST \u002Fapi\u002Fauth\u002Flogin 200 in 1ms\n",[529,1807,1808,1810,1813],{"class":531,"line":563},[529,1809,1002],{"class":692},[529,1811,1812],{"class":556}," requestId:",[529,1814,1815],{"class":556}," 88ced16a-bef2-4483-86cb-2b4fb677ea52\n",[529,1817,1818,1820,1822,1825],{"class":531,"line":570},[529,1819,1002],{"class":692},[529,1821,1463],{"class":556},[529,1823,1824],{"class":556}," id=user_123",[529,1826,1827],{"class":556}," email=demo@example.com\n",[529,1829,1830,1832,1835],{"class":531,"line":605},[529,1831,1023],{"class":692},[529,1833,1834],{"class":556}," action:",[529,1836,1837],{"class":556}," login\n",[1588,1839,1841],{"id":1840},"explicit-service-parameter","Explicit Service Parameter",[435,1843,1844,1845,624],{},"Override the service name for specific routes using the second parameter of ",[449,1846,451],{},[519,1848,1851],{"className":521,"code":1849,"filename":1850,"language":524,"meta":525,"style":525},"import { useLogger } from 'evlog'\n\nexport default defineEventHandler((event) => {\n  const log = useLogger(event, 'legacy-service')\n\n  log.set({ action: 'process_legacy_request' })\n\n  return { success: true }\n})\n","server\u002Fapi\u002Flegacy\u002Fprocess.post.ts",[449,1852,1853,1871,1875,1895,1920,1924,1951,1955,1969],{"__ignoreMap":525},[529,1854,1855,1857,1859,1861,1863,1865,1867,1869],{"class":531,"line":532},[529,1856,536],{"class":535},[529,1858,540],{"class":539},[529,1860,1189],{"class":543},[529,1862,547],{"class":539},[529,1864,550],{"class":535},[529,1866,553],{"class":539},[529,1868,557],{"class":556},[529,1870,560],{"class":539},[529,1872,1873],{"class":531,"line":563},[529,1874,567],{"emptyLinePlaceholder":566},[529,1876,1877,1879,1881,1883,1885,1887,1889,1891,1893],{"class":531,"line":570},[529,1878,1208],{"class":535},[529,1880,1211],{"class":535},[529,1882,1214],{"class":578},[529,1884,581],{"class":543},[529,1886,581],{"class":539},[529,1888,1226],{"class":1225},[529,1890,1229],{"class":539},[529,1892,1232],{"class":852},[529,1894,1235],{"class":539},[529,1896,1897,1899,1901,1903,1905,1907,1909,1911,1913,1916,1918],{"class":531,"line":605},[529,1898,1240],{"class":852},[529,1900,544],{"class":543},[529,1902,1245],{"class":539},[529,1904,1189],{"class":578},[529,1906,581],{"class":620},[529,1908,1226],{"class":543},[529,1910,592],{"class":539},[529,1912,553],{"class":539},[529,1914,1915],{"class":556},"legacy-service",[529,1917,584],{"class":539},[529,1919,602],{"class":620},[529,1921,1922],{"class":531,"line":652},[529,1923,567],{"emptyLinePlaceholder":566},[529,1925,1926,1928,1930,1932,1934,1936,1938,1940,1942,1945,1947,1949],{"class":531,"line":898},[529,1927,1262],{"class":543},[529,1929,575],{"class":539},[529,1931,910],{"class":578},[529,1933,581],{"class":620},[529,1935,617],{"class":539},[529,1937,621],{"class":620},[529,1939,624],{"class":539},[529,1941,553],{"class":539},[529,1943,1944],{"class":556},"process_legacy_request",[529,1946,584],{"class":539},[529,1948,547],{"class":539},[529,1950,602],{"class":620},[529,1952,1953],{"class":531,"line":903},[529,1954,567],{"emptyLinePlaceholder":566},[529,1956,1957,1959,1961,1963,1965,1967],{"class":531,"line":939},[529,1958,1408],{"class":535},[529,1960,540],{"class":539},[529,1962,1413],{"class":620},[529,1964,624],{"class":539},[529,1966,1419],{"class":1418},[529,1968,1434],{"class":539},[529,1970,1971,1973],{"class":531,"line":971},[529,1972,1440],{"class":539},[529,1974,602],{"class":543},[439,1976,1977,1980,1981,1983,1984,1987],{"color":441,"icon":13},[444,1978,1979],{},"Priority order:"," Explicit ",[449,1982,451],{}," parameter > Route configuration > ",[449,1985,1986],{},"env.service"," > Auto-detected from environment",[508,1989,1991],{"id":1990},"createerror-structured-errors","createError (Structured Errors)",[435,1993,1529,1994,1997],{},[449,1995,1996],{},"createError()"," to throw errors with actionable context:",[516,1999,2000,2121],{},[519,2001,2003],{"className":521,"code":2002,"filename":1178,"language":524,"meta":525,"style":525},"import { createError } from 'evlog'\n\nthrow createError({\n  message: 'Payment failed',\n  status: 402,\n  why: 'Card declined by issuer',\n  fix: 'Try a different payment method',\n  link: 'https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined',\n})\n",[449,2004,2005,2024,2028,2039,2055,2067,2083,2099,2115],{"__ignoreMap":525},[529,2006,2007,2009,2011,2014,2016,2018,2020,2022],{"class":531,"line":532},[529,2008,536],{"class":535},[529,2010,540],{"class":539},[529,2012,2013],{"class":543}," createError",[529,2015,547],{"class":539},[529,2017,550],{"class":535},[529,2019,553],{"class":539},[529,2021,557],{"class":556},[529,2023,560],{"class":539},[529,2025,2026],{"class":531,"line":563},[529,2027,567],{"emptyLinePlaceholder":566},[529,2029,2030,2033,2035,2037],{"class":531,"line":570},[529,2031,2032],{"class":535},"throw",[529,2034,2013],{"class":578},[529,2036,581],{"class":543},[529,2038,1616],{"class":539},[529,2040,2041,2044,2046,2048,2051,2053],{"class":531,"line":605},[529,2042,2043],{"class":620},"  message",[529,2045,624],{"class":539},[529,2047,553],{"class":539},[529,2049,2050],{"class":556},"Payment failed",[529,2052,584],{"class":539},[529,2054,1639],{"class":539},[529,2056,2057,2060,2062,2065],{"class":531,"line":652},[529,2058,2059],{"class":620},"  status",[529,2061,624],{"class":539},[529,2063,2064],{"class":929}," 402",[529,2066,1639],{"class":539},[529,2068,2069,2072,2074,2076,2079,2081],{"class":531,"line":898},[529,2070,2071],{"class":620},"  why",[529,2073,624],{"class":539},[529,2075,553],{"class":539},[529,2077,2078],{"class":556},"Card declined by issuer",[529,2080,584],{"class":539},[529,2082,1639],{"class":539},[529,2084,2085,2088,2090,2092,2095,2097],{"class":531,"line":903},[529,2086,2087],{"class":620},"  fix",[529,2089,624],{"class":539},[529,2091,553],{"class":539},[529,2093,2094],{"class":556},"Try a different payment method",[529,2096,584],{"class":539},[529,2098,1639],{"class":539},[529,2100,2101,2104,2106,2108,2111,2113],{"class":531,"line":939},[529,2102,2103],{"class":620},"  link",[529,2105,624],{"class":539},[529,2107,553],{"class":539},[529,2109,2110],{"class":556},"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined",[529,2112,584],{"class":539},[529,2114,1639],{"class":539},[529,2116,2117,2119],{"class":531,"line":971},[529,2118,1440],{"class":539},[529,2120,602],{"class":543},[519,2122,2127],{"className":2123,"code":2124,"filename":2125,"language":2126,"meta":525,"style":525},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"statusCode\": 402,\n  \"message\": \"Payment failed\",\n  \"data\": {\n    \"why\": \"Card declined by issuer\",\n    \"fix\": \"Try a different payment method\",\n    \"link\": \"https:\u002F\u002Fdocs.example.com\u002Fpayments\u002Fdeclined\"\n  }\n}\n","Response","json",[449,2128,2129,2133,2150,2170,2183,2203,2222,2240,2245],{"__ignoreMap":525},[529,2130,2131],{"class":531,"line":532},[529,2132,1616],{"class":539},[529,2134,2135,2138,2141,2144,2146,2148],{"class":531,"line":563},[529,2136,2137],{"class":539},"  \"",[529,2139,2140],{"class":852},"statusCode",[529,2142,2143],{"class":539},"\"",[529,2145,624],{"class":539},[529,2147,2064],{"class":929},[529,2149,1639],{"class":539},[529,2151,2152,2154,2157,2159,2161,2164,2166,2168],{"class":531,"line":570},[529,2153,2137],{"class":539},[529,2155,2156],{"class":852},"message",[529,2158,2143],{"class":539},[529,2160,624],{"class":539},[529,2162,2163],{"class":539}," \"",[529,2165,2050],{"class":556},[529,2167,2143],{"class":539},[529,2169,1639],{"class":539},[529,2171,2172,2174,2177,2179,2181],{"class":531,"line":605},[529,2173,2137],{"class":539},[529,2175,2176],{"class":852},"data",[529,2178,2143],{"class":539},[529,2180,624],{"class":539},[529,2182,1235],{"class":539},[529,2184,2185,2188,2191,2193,2195,2197,2199,2201],{"class":531,"line":652},[529,2186,2187],{"class":539},"    \"",[529,2189,2190],{"class":692},"why",[529,2192,2143],{"class":539},[529,2194,624],{"class":539},[529,2196,2163],{"class":539},[529,2198,2078],{"class":556},[529,2200,2143],{"class":539},[529,2202,1639],{"class":539},[529,2204,2205,2207,2210,2212,2214,2216,2218,2220],{"class":531,"line":898},[529,2206,2187],{"class":539},[529,2208,2209],{"class":692},"fix",[529,2211,2143],{"class":539},[529,2213,624],{"class":539},[529,2215,2163],{"class":539},[529,2217,2094],{"class":556},[529,2219,2143],{"class":539},[529,2221,1639],{"class":539},[529,2223,2224,2226,2229,2231,2233,2235,2237],{"class":531,"line":903},[529,2225,2187],{"class":539},[529,2227,2228],{"class":692},"link",[529,2230,2143],{"class":539},[529,2232,624],{"class":539},[529,2234,2163],{"class":539},[529,2236,2110],{"class":556},[529,2238,2239],{"class":539},"\"\n",[529,2241,2242],{"class":531,"line":939},[529,2243,2244],{"class":539},"  }\n",[529,2246,2247],{"class":531,"line":971},[529,2248,2249],{"class":539},"}\n",[1513,2251,2253],{"id":2252},"error-fields","Error Fields",[1518,2255,2256,2269],{},[1521,2257,2258],{},[1524,2259,2260,2263,2266],{},[1527,2261,2262],{},"Field",[1527,2264,2265],{},"Required",[1527,2267,2268],{},"Description",[1544,2270,2271,2283,2296,2307,2318,2329,2341],{},[1524,2272,2273,2277,2280],{},[1549,2274,2275],{},[449,2276,2156],{},[1549,2278,2279],{},"Yes",[1549,2281,2282],{},"What happened (user-facing)",[1524,2284,2285,2290,2293],{},[1549,2286,2287],{},[449,2288,2289],{},"status",[1549,2291,2292],{},"No",[1549,2294,2295],{},"HTTP status code (default: 500)",[1524,2297,2298,2302,2304],{},[1549,2299,2300],{},[449,2301,2190],{},[1549,2303,2292],{},[1549,2305,2306],{},"Technical reason (for debugging)",[1524,2308,2309,2313,2315],{},[1549,2310,2311],{},[449,2312,2209],{},[1549,2314,2292],{},[1549,2316,2317],{},"Actionable solution",[1524,2319,2320,2324,2326],{},[1549,2321,2322],{},[449,2323,2228],{},[1549,2325,2292],{},[1549,2327,2328],{},"Documentation URL for more info",[1524,2330,2331,2336,2338],{},[1549,2332,2333],{},[449,2334,2335],{},"cause",[1549,2337,2292],{},[1549,2339,2340],{},"Original error (if wrapping)",[1524,2342,2343,2348,2350],{},[1549,2344,2345],{},[449,2346,2347],{},"internal",[1549,2349,2292],{},[1549,2351,2352,2353],{},"Backend-only fields for logs and wide events — never included in HTTP JSON or ",[449,2354,2355],{},"parseError()",[1513,2357,2359],{"id":2358},"frontend-integration","Frontend Integration",[435,2361,1529,2362,2364],{},[449,2363,2355],{}," to extract all error fields on the client:",[519,2366,2369],{"className":521,"code":2367,"filename":2368,"language":524,"meta":525,"style":525},"import { parseError } from 'evlog'\n\nexport async function checkout(cart: Cart) {\n  try {\n    await $fetch('\u002Fapi\u002Fcheckout', { method: 'POST', body: cart })\n  } catch (err) {\n    const error = parseError(err)\n\n    toast.add({\n      title: error.message,\n      description: error.why,\n      color: 'error',\n      actions: error.link\n        ? [{ label: 'Learn more', onClick: () => window.open(error.link) }]\n        : undefined,\n    })\n\n    if (error.fix) {\n      console.info(`Fix: ${error.fix}`)\n    }\n  }\n}\n","composables\u002FuseCheckout.ts",[449,2370,2371,2390,2394,2421,2428,2471,2489,2506,2510,2524,2539,2554,2569,2583,2639,2648,2656,2661,2679,2711,2717,2722],{"__ignoreMap":525},[529,2372,2373,2375,2377,2380,2382,2384,2386,2388],{"class":531,"line":532},[529,2374,536],{"class":535},[529,2376,540],{"class":539},[529,2378,2379],{"class":543}," parseError",[529,2381,547],{"class":539},[529,2383,550],{"class":535},[529,2385,553],{"class":539},[529,2387,557],{"class":556},[529,2389,560],{"class":539},[529,2391,2392],{"class":531,"line":563},[529,2393,567],{"emptyLinePlaceholder":566},[529,2395,2396,2398,2401,2404,2407,2409,2412,2414,2417,2419],{"class":531,"line":570},[529,2397,1208],{"class":535},[529,2399,2400],{"class":852}," async",[529,2402,2403],{"class":852}," function",[529,2405,2406],{"class":578}," checkout",[529,2408,581],{"class":539},[529,2410,2411],{"class":1225},"cart",[529,2413,624],{"class":539},[529,2415,2416],{"class":692}," Cart",[529,2418,1229],{"class":539},[529,2420,1235],{"class":539},[529,2422,2423,2426],{"class":531,"line":605},[529,2424,2425],{"class":535},"  try",[529,2427,1235],{"class":539},[529,2429,2430,2433,2436,2438,2440,2442,2444,2446,2448,2450,2452,2454,2456,2458,2460,2463,2465,2467,2469],{"class":531,"line":652},[529,2431,2432],{"class":535},"    await",[529,2434,2435],{"class":578}," $fetch",[529,2437,581],{"class":620},[529,2439,584],{"class":539},[529,2441,1141],{"class":556},[529,2443,584],{"class":539},[529,2445,592],{"class":539},[529,2447,540],{"class":539},[529,2449,1120],{"class":620},[529,2451,624],{"class":539},[529,2453,553],{"class":539},[529,2455,1127],{"class":556},[529,2457,584],{"class":539},[529,2459,592],{"class":539},[529,2461,2462],{"class":620}," body",[529,2464,624],{"class":539},[529,2466,1320],{"class":543},[529,2468,547],{"class":539},[529,2470,602],{"class":620},[529,2472,2473,2476,2479,2481,2484,2487],{"class":531,"line":898},[529,2474,2475],{"class":539},"  }",[529,2477,2478],{"class":535}," catch",[529,2480,1222],{"class":620},[529,2482,2483],{"class":543},"err",[529,2485,2486],{"class":620},") ",[529,2488,1616],{"class":539},[529,2490,2491,2494,2496,2498,2500,2502,2504],{"class":531,"line":903},[529,2492,2493],{"class":852},"    const",[529,2495,636],{"class":543},[529,2497,1245],{"class":539},[529,2499,2379],{"class":578},[529,2501,581],{"class":620},[529,2503,2483],{"class":543},[529,2505,602],{"class":620},[529,2507,2508],{"class":531,"line":939},[529,2509,567],{"emptyLinePlaceholder":566},[529,2511,2512,2515,2517,2520,2522],{"class":531,"line":971},[529,2513,2514],{"class":543},"    toast",[529,2516,575],{"class":539},[529,2518,2519],{"class":578},"add",[529,2521,581],{"class":620},[529,2523,1616],{"class":539},[529,2525,2526,2529,2531,2533,2535,2537],{"class":531,"line":1372},[529,2527,2528],{"class":620},"      title",[529,2530,624],{"class":539},[529,2532,636],{"class":543},[529,2534,575],{"class":539},[529,2536,2156],{"class":543},[529,2538,1639],{"class":539},[529,2540,2541,2544,2546,2548,2550,2552],{"class":531,"line":1400},[529,2542,2543],{"class":620},"      description",[529,2545,624],{"class":539},[529,2547,636],{"class":543},[529,2549,575],{"class":539},[529,2551,2190],{"class":543},[529,2553,1639],{"class":539},[529,2555,2556,2559,2561,2563,2565,2567],{"class":531,"line":1405},[529,2557,2558],{"class":620},"      color",[529,2560,624],{"class":539},[529,2562,553],{"class":539},[529,2564,612],{"class":556},[529,2566,584],{"class":539},[529,2568,1639],{"class":539},[529,2570,2571,2574,2576,2578,2580],{"class":531,"line":1437},[529,2572,2573],{"class":620},"      actions",[529,2575,624],{"class":539},[529,2577,636],{"class":543},[529,2579,575],{"class":539},[529,2581,2582],{"class":543},"link\n",[529,2584,2585,2588,2590,2592,2595,2597,2599,2602,2604,2606,2609,2611,2614,2616,2619,2621,2624,2626,2628,2630,2632,2634,2636],{"class":531,"line":1783},[529,2586,2587],{"class":539},"        ?",[529,2589,1626],{"class":620},[529,2591,617],{"class":539},[529,2593,2594],{"class":620}," label",[529,2596,624],{"class":539},[529,2598,553],{"class":539},[529,2600,2601],{"class":556},"Learn more",[529,2603,584],{"class":539},[529,2605,592],{"class":539},[529,2607,2608],{"class":578}," onClick",[529,2610,624],{"class":539},[529,2612,2613],{"class":539}," ()",[529,2615,1232],{"class":852},[529,2617,2618],{"class":543}," window",[529,2620,575],{"class":539},[529,2622,2623],{"class":578},"open",[529,2625,581],{"class":620},[529,2627,612],{"class":543},[529,2629,575],{"class":539},[529,2631,2228],{"class":543},[529,2633,2486],{"class":620},[529,2635,1440],{"class":539},[529,2637,2638],{"class":620},"]\n",[529,2640,2642,2645],{"class":531,"line":2641},15,[529,2643,2644],{"class":539},"        :",[529,2646,2647],{"class":539}," undefined,\n",[529,2649,2651,2654],{"class":531,"line":2650},16,[529,2652,2653],{"class":539},"    }",[529,2655,602],{"class":620},[529,2657,2659],{"class":531,"line":2658},17,[529,2660,567],{"emptyLinePlaceholder":566},[529,2662,2664,2667,2669,2671,2673,2675,2677],{"class":531,"line":2663},18,[529,2665,2666],{"class":535},"    if",[529,2668,1222],{"class":620},[529,2670,612],{"class":543},[529,2672,575],{"class":539},[529,2674,2209],{"class":543},[529,2676,2486],{"class":620},[529,2678,1616],{"class":539},[529,2680,2682,2685,2687,2689,2691,2694,2697,2700,2702,2704,2706,2709],{"class":531,"line":2681},19,[529,2683,2684],{"class":543},"      console",[529,2686,575],{"class":539},[529,2688,441],{"class":578},[529,2690,581],{"class":620},[529,2692,2693],{"class":539},"`",[529,2695,2696],{"class":556},"Fix: ",[529,2698,2699],{"class":539},"${",[529,2701,612],{"class":543},[529,2703,575],{"class":539},[529,2705,2209],{"class":543},[529,2707,2708],{"class":539},"}`",[529,2710,602],{"class":620},[529,2712,2714],{"class":531,"line":2713},20,[529,2715,2716],{"class":539},"    }\n",[529,2718,2720],{"class":531,"line":2719},21,[529,2721,2244],{"class":539},[529,2723,2725],{"class":531,"line":2724},22,[529,2726,2249],{"class":539},[508,2728,2730],{"id":2729},"log-client-side","log (Client-Side)",[435,2732,2733,2734,2736],{},"The same ",[449,2735,455],{}," API works on the client side, outputting to the browser console:",[516,2738,2739,2967],{},[519,2740,2745],{"className":2741,"code":2742,"filename":2743,"language":2744,"meta":525,"style":525},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nasync function handleCheckout() {\n  log.info('checkout', 'User initiated checkout')\n\n  try {\n    await $fetch('\u002Fapi\u002Fcheckout', { method: 'POST' })\n    log.info({ action: 'checkout', status: 'success' })\n  } catch (err) {\n    log.error({ action: 'checkout', error: 'failed' })\n  }\n}\n\u003C\u002Fscript>\n","components\u002FCheckoutButton.vue","vue",[449,2746,2747,2773,2787,2815,2819,2825,2857,2897,2911,2950,2954,2958],{"__ignoreMap":525},[529,2748,2749,2752,2755,2758,2761,2763,2765,2768,2770],{"class":531,"line":532},[529,2750,2751],{"class":539},"\u003C",[529,2753,2754],{"class":620},"script",[529,2756,2757],{"class":852}," setup",[529,2759,2760],{"class":852}," lang",[529,2762,710],{"class":539},[529,2764,2143],{"class":539},[529,2766,2767],{"class":556},"ts",[529,2769,2143],{"class":539},[529,2771,2772],{"class":539},">\n",[529,2774,2775,2777,2779,2782,2785],{"class":531,"line":563},[529,2776,1219],{"class":852},[529,2778,2403],{"class":852},[529,2780,2781],{"class":578}," handleCheckout",[529,2783,2784],{"class":539},"()",[529,2786,1235],{"class":539},[529,2788,2789,2791,2793,2795,2797,2799,2802,2804,2806,2808,2811,2813],{"class":531,"line":570},[529,2790,1262],{"class":543},[529,2792,575],{"class":539},[529,2794,441],{"class":578},[529,2796,581],{"class":620},[529,2798,584],{"class":539},[529,2800,2801],{"class":556},"checkout",[529,2803,584],{"class":539},[529,2805,592],{"class":539},[529,2807,553],{"class":539},[529,2809,2810],{"class":556},"User initiated checkout",[529,2812,584],{"class":539},[529,2814,602],{"class":620},[529,2816,2817],{"class":531,"line":605},[529,2818,567],{"emptyLinePlaceholder":566},[529,2820,2821,2823],{"class":531,"line":652},[529,2822,2425],{"class":535},[529,2824,1235],{"class":539},[529,2826,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2855],{"class":531,"line":898},[529,2828,2432],{"class":535},[529,2830,2435],{"class":578},[529,2832,581],{"class":620},[529,2834,584],{"class":539},[529,2836,1141],{"class":556},[529,2838,584],{"class":539},[529,2840,592],{"class":539},[529,2842,540],{"class":539},[529,2844,1120],{"class":620},[529,2846,624],{"class":539},[529,2848,553],{"class":539},[529,2850,1127],{"class":556},[529,2852,584],{"class":539},[529,2854,547],{"class":539},[529,2856,602],{"class":620},[529,2858,2859,2862,2864,2866,2868,2870,2872,2874,2876,2878,2880,2882,2885,2887,2889,2891,2893,2895],{"class":531,"line":903},[529,2860,2861],{"class":543},"    log",[529,2863,575],{"class":539},[529,2865,441],{"class":578},[529,2867,581],{"class":620},[529,2869,617],{"class":539},[529,2871,621],{"class":620},[529,2873,624],{"class":539},[529,2875,553],{"class":539},[529,2877,2801],{"class":556},[529,2879,584],{"class":539},[529,2881,592],{"class":539},[529,2883,2884],{"class":620}," status",[529,2886,624],{"class":539},[529,2888,553],{"class":539},[529,2890,1504],{"class":556},[529,2892,584],{"class":539},[529,2894,547],{"class":539},[529,2896,602],{"class":620},[529,2898,2899,2901,2903,2905,2907,2909],{"class":531,"line":939},[529,2900,2475],{"class":539},[529,2902,2478],{"class":535},[529,2904,1222],{"class":620},[529,2906,2483],{"class":543},[529,2908,2486],{"class":620},[529,2910,1616],{"class":539},[529,2912,2913,2915,2917,2919,2921,2923,2925,2927,2929,2931,2933,2935,2937,2939,2941,2944,2946,2948],{"class":531,"line":971},[529,2914,2861],{"class":543},[529,2916,575],{"class":539},[529,2918,612],{"class":578},[529,2920,581],{"class":620},[529,2922,617],{"class":539},[529,2924,621],{"class":620},[529,2926,624],{"class":539},[529,2928,553],{"class":539},[529,2930,2801],{"class":556},[529,2932,584],{"class":539},[529,2934,592],{"class":539},[529,2936,636],{"class":620},[529,2938,624],{"class":539},[529,2940,553],{"class":539},[529,2942,2943],{"class":556},"failed",[529,2945,584],{"class":539},[529,2947,547],{"class":539},[529,2949,602],{"class":620},[529,2951,2952],{"class":531,"line":1372},[529,2953,2244],{"class":539},[529,2955,2956],{"class":531,"line":1400},[529,2957,2249],{"class":539},[529,2959,2960,2963,2965],{"class":531,"line":1405},[529,2961,2962],{"class":539},"\u003C\u002F",[529,2964,2754],{"class":620},[529,2966,2772],{"class":539},[519,2968,2971],{"className":521,"code":2969,"filename":2970,"language":524,"meta":525,"style":525},"export function useAnalytics() {\n  function trackEvent(event: string, data?: Record\u003Cstring, unknown>) {\n    log.info('analytics', `Event: ${event}`)\n    if (data) {\n      log.debug({ event, ...data })\n    }\n  }\n\n  return { trackEvent }\n}\n","composables\u002FuseAnalytics.ts",[449,2972,2973,2986,3029,3062,3074,3102,3106,3110,3114,3124],{"__ignoreMap":525},[529,2974,2975,2977,2979,2982,2984],{"class":531,"line":532},[529,2976,1208],{"class":535},[529,2978,2403],{"class":852},[529,2980,2981],{"class":578}," useAnalytics",[529,2983,2784],{"class":539},[529,2985,1235],{"class":539},[529,2987,2988,2991,2994,2996,2998,3000,3003,3005,3008,3011,3014,3016,3019,3021,3024,3027],{"class":531,"line":563},[529,2989,2990],{"class":852},"  function",[529,2992,2993],{"class":578}," trackEvent",[529,2995,581],{"class":539},[529,2997,1226],{"class":1225},[529,2999,624],{"class":539},[529,3001,3002],{"class":692}," string",[529,3004,592],{"class":539},[529,3006,3007],{"class":1225}," data",[529,3009,3010],{"class":539},"?:",[529,3012,3013],{"class":692}," Record",[529,3015,2751],{"class":539},[529,3017,3018],{"class":692},"string",[529,3020,592],{"class":539},[529,3022,3023],{"class":692}," unknown",[529,3025,3026],{"class":539},">)",[529,3028,1235],{"class":539},[529,3030,3031,3033,3035,3037,3039,3041,3044,3046,3048,3051,3054,3056,3058,3060],{"class":531,"line":570},[529,3032,2861],{"class":543},[529,3034,575],{"class":539},[529,3036,441],{"class":578},[529,3038,581],{"class":620},[529,3040,584],{"class":539},[529,3042,3043],{"class":556},"analytics",[529,3045,584],{"class":539},[529,3047,592],{"class":539},[529,3049,3050],{"class":539}," `",[529,3052,3053],{"class":556},"Event: ",[529,3055,2699],{"class":539},[529,3057,1226],{"class":543},[529,3059,2708],{"class":539},[529,3061,602],{"class":620},[529,3063,3064,3066,3068,3070,3072],{"class":531,"line":605},[529,3065,2666],{"class":535},[529,3067,1222],{"class":620},[529,3069,2176],{"class":543},[529,3071,2486],{"class":620},[529,3073,1616],{"class":539},[529,3075,3076,3079,3081,3084,3086,3088,3091,3093,3096,3098,3100],{"class":531,"line":652},[529,3077,3078],{"class":543},"      log",[529,3080,575],{"class":539},[529,3082,3083],{"class":578},"debug",[529,3085,581],{"class":620},[529,3087,617],{"class":539},[529,3089,3090],{"class":543}," event",[529,3092,592],{"class":539},[529,3094,3095],{"class":539}," ...",[529,3097,2176],{"class":543},[529,3099,547],{"class":539},[529,3101,602],{"class":620},[529,3103,3104],{"class":531,"line":898},[529,3105,2716],{"class":539},[529,3107,3108],{"class":531,"line":903},[529,3109,2244],{"class":539},[529,3111,3112],{"class":531,"line":939},[529,3113,567],{"emptyLinePlaceholder":566},[529,3115,3116,3118,3120,3122],{"class":531,"line":971},[529,3117,1408],{"class":535},[529,3119,540],{"class":539},[529,3121,2993],{"class":543},[529,3123,1434],{"class":539},[529,3125,3126],{"class":531,"line":1372},[529,3127,2249],{"class":539},[439,3129,3130,3131,3133],{"color":754,"icon":755},"See ",[497,3132,66],{"href":67}," for transport configuration, identity context, and browser drain setup.",[508,3135,3137],{"id":3136},"next-steps","Next Steps",[472,3139,3140,3146,3151,3156,3161],{},[475,3141,3142,3145],{},[497,3143,3144],{"href":42},"Logging Overview",": Understand all three logging modes",[475,3147,3148,3150],{},[497,3149,51],{"href":52},": Learn how to design effective wide events",[475,3152,3153,3155],{},[497,3154,180],{"href":181},": Add compile-time type safety to your wide events",[475,3157,3158,3160],{},[497,3159,56],{"href":57},": Master error handling with evlog",[475,3162,3163,3165],{},[497,3164,185],{"href":186},": Security guidelines and production tips",[3167,3168,3169],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":525,"searchDepth":563,"depth":563,"links":3171},[3172,3173,3174,3178,3182,3183],{"id":510,"depth":563,"text":511},{"id":762,"depth":563,"text":763},{"id":1164,"depth":563,"text":1165,"children":3175},[3176,3177],{"id":1515,"depth":570,"text":1516},{"id":1582,"depth":570,"text":1583},{"id":1990,"depth":563,"text":1991,"children":3179},[3180,3181],{"id":2252,"depth":570,"text":2253},{"id":2358,"depth":570,"text":2359},{"id":2729,"depth":563,"text":2730},{"id":3136,"depth":563,"text":3137},"Get up and running with evlog in minutes. Learn the log API, createLogger for wide events, useLogger for requests, and structured errors.","md",[3187,3189],{"label":3144,"icon":44,"to":42,"color":754,"variant":3188},"subtle",{"label":56,"icon":59,"to":57,"color":754,"variant":3188},{},{"icon":23},{"title":20,"description":3184},"vK8QY41lkdf_r_u1gFwaQjtSNA9NpR7FKRlqJRQwSMg",[3195,3197],{"title":15,"path":16,"stem":17,"description":3196,"icon":18,"children":-1},"Install evlog in your TypeScript project. Supports Nuxt, Next.js, SvelteKit, Hono, Express, Fastify, Elysia, NestJS, and standalone scripts.",{"title":25,"path":26,"stem":27,"description":3198,"icon":28,"children":-1},"AI-assisted code review and evlog adoption using Agent Skills. Let AI review your logging patterns and guide migration to wide events.",1778336616360]