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