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