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