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