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