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