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