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