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