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