[{"data":1,"prerenderedAt":2930},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-self-hosted-memory":464,"-integrate-adapters-self-hosted-memory-surround":2925},[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":466,"body":467,"description":2913,"extension":2914,"links":2915,"meta":2921,"navigation":2922,"path":154,"seo":2923,"stem":155,"__hash__":2924},"docs\u002F3.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory.md","Memory Adapter",{"type":468,"value":469,"toc":2892},"minimark",[470,489,496,542,546,549,598,601,1383,1387,1394,1542,1569,1578,1581,1585,1650,1716,1720,1757,1764,1768,1771,1948,1952,1960,2248,2254,2357,2361,2364,2542,2546,2556,2565,2576,2580,2583,2756,2762,2857,2861,2888],[471,472,473,474,478,479,483,484,488],"p",{},"The Memory adapter stores wide events in a module-level ring buffer. Unlike the ",[475,476,477],"a",{"href":144},"File System adapter",", it has ",[480,481,482],"strong",{},"zero runtime dependencies"," and runs anywhere — including Cloudflare Workers (workerd), Deno Deploy, and other edge runtimes that don't expose Node's ",[485,486,487],"code",{},"fs"," module.",[471,490,491,492,495],{},"The primary use case is ",[480,493,494],{},"local dev agent access",": wire the drain during development, expose a lightweight HTTP endpoint, and let your AI agent fetch structured logs over HTTP without any external tooling.",[497,498,501,504,529],"prompt",{":actions":499,"description":500,"icon":156},"[\"copy\",\"cursor\",\"claude\"]","Add the memory drain adapter",[471,502,503],{},"Add the memory drain adapter to store evlog wide events in an in-memory ring buffer.",[505,506,507,511,514,517,520,523,526],"ol",{},[508,509,510],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[508,512,513],{},"Install evlog if not already installed",[508,515,516],{},"Import createMemoryDrain and readMemoryLogs from 'evlog\u002Fmemory'",[508,518,519],{},"Wire createMemoryDrain() into my framework's drain configuration",[508,521,522],{},"Expose a dev-only HTTP endpoint that returns readMemoryLogs() as JSON",[508,524,525],{},"Agents can now hit that endpoint to retrieve structured logs over HTTP",[508,527,528],{},"Optionally configure maxEvents (default 1000) or use named stores",[471,530,531,532,537,538],{},"Adapter docs: ",[475,533,534],{"href":534,"rel":535},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory",[536],"nofollow","\nFramework setup: ",[475,539,540],{"href":540,"rel":541},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[536],[543,544,20],"h2",{"id":545},"installation",[471,547,548],{},"The Memory adapter comes bundled with evlog:",[550,551,557],"pre",{"className":552,"code":553,"filename":554,"language":555,"meta":556,"style":556},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createMemoryDrain, readMemoryLogs } from 'evlog\u002Fmemory'\n","src\u002Findex.ts","typescript","",[485,558,559],{"__ignoreMap":556},[560,561,564,568,572,576,579,582,585,588,591,595],"span",{"class":562,"line":563},"line",1,[560,565,567],{"class":566},"s7zQu","import",[560,569,571],{"class":570},"sMK4o"," {",[560,573,575],{"class":574},"sTEyZ"," createMemoryDrain",[560,577,578],{"class":570},",",[560,580,581],{"class":574}," readMemoryLogs",[560,583,584],{"class":570}," }",[560,586,587],{"class":566}," from",[560,589,590],{"class":570}," '",[560,592,594],{"class":593},"sfazB","evlog\u002Fmemory",[560,596,597],{"class":570},"'\n",[543,599,25],{"id":600},"quick-start",[602,603,604,835,928,1056,1130,1208,1282,1335],"code-group",{},[550,605,608],{"className":552,"code":606,"filename":607,"language":555,"meta":556,"style":556},"\u002F\u002F src\u002Findex.ts\nimport { Hono } from 'hono'\nimport { evlog } from 'evlog\u002Fhono'\nimport { createMemoryDrain, readMemoryLogs } from 'evlog\u002Fmemory'\n\nconst app = new Hono()\n\napp.use(evlog({ drain: createMemoryDrain() }))\n\n\u002F\u002F Dev-only endpoint — restrict or remove in production\napp.get('\u002F_evlog\u002Flogs', (c) => {\n  return c.json(readMemoryLogs())\n})\n","Hono (Cloudflare Workers)",[485,609,610,616,637,658,681,688,710,715,756,761,767,805,827],{"__ignoreMap":556},[560,611,612],{"class":562,"line":563},[560,613,615],{"class":614},"sHwdD","\u002F\u002F src\u002Findex.ts\n",[560,617,619,621,623,626,628,630,632,635],{"class":562,"line":618},2,[560,620,567],{"class":566},[560,622,571],{"class":570},[560,624,625],{"class":574}," Hono",[560,627,584],{"class":570},[560,629,587],{"class":566},[560,631,590],{"class":570},[560,633,634],{"class":593},"hono",[560,636,597],{"class":570},[560,638,640,642,644,647,649,651,653,656],{"class":562,"line":639},3,[560,641,567],{"class":566},[560,643,571],{"class":570},[560,645,646],{"class":574}," evlog",[560,648,584],{"class":570},[560,650,587],{"class":566},[560,652,590],{"class":570},[560,654,655],{"class":593},"evlog\u002Fhono",[560,657,597],{"class":570},[560,659,661,663,665,667,669,671,673,675,677,679],{"class":562,"line":660},4,[560,662,567],{"class":566},[560,664,571],{"class":570},[560,666,575],{"class":574},[560,668,578],{"class":570},[560,670,581],{"class":574},[560,672,584],{"class":570},[560,674,587],{"class":566},[560,676,590],{"class":570},[560,678,594],{"class":593},[560,680,597],{"class":570},[560,682,684],{"class":562,"line":683},5,[560,685,687],{"emptyLinePlaceholder":686},true,"\n",[560,689,691,695,698,701,704,707],{"class":562,"line":690},6,[560,692,694],{"class":693},"spNyl","const",[560,696,697],{"class":574}," app ",[560,699,700],{"class":570},"=",[560,702,703],{"class":570}," new",[560,705,625],{"class":706},"s2Zo4",[560,708,709],{"class":574},"()\n",[560,711,713],{"class":562,"line":712},7,[560,714,687],{"emptyLinePlaceholder":686},[560,716,718,721,724,727,730,733,735,738,742,745,747,750,753],{"class":562,"line":717},8,[560,719,720],{"class":574},"app",[560,722,723],{"class":570},".",[560,725,726],{"class":706},"use",[560,728,729],{"class":574},"(",[560,731,732],{"class":706},"evlog",[560,734,729],{"class":574},[560,736,737],{"class":570},"{",[560,739,741],{"class":740},"swJcz"," drain",[560,743,744],{"class":570},":",[560,746,575],{"class":706},[560,748,749],{"class":574},"() ",[560,751,752],{"class":570},"}",[560,754,755],{"class":574},"))\n",[560,757,759],{"class":562,"line":758},9,[560,760,687],{"emptyLinePlaceholder":686},[560,762,764],{"class":562,"line":763},10,[560,765,766],{"class":614},"\u002F\u002F Dev-only endpoint — restrict or remove in production\n",[560,768,770,772,774,777,779,782,785,787,789,792,796,799,802],{"class":562,"line":769},11,[560,771,720],{"class":574},[560,773,723],{"class":570},[560,775,776],{"class":706},"get",[560,778,729],{"class":574},[560,780,781],{"class":570},"'",[560,783,784],{"class":593},"\u002F_evlog\u002Flogs",[560,786,781],{"class":570},[560,788,578],{"class":570},[560,790,791],{"class":570}," (",[560,793,795],{"class":794},"sHdIc","c",[560,797,798],{"class":570},")",[560,800,801],{"class":693}," =>",[560,803,804],{"class":570}," {\n",[560,806,808,811,814,816,819,821,824],{"class":562,"line":807},12,[560,809,810],{"class":566},"  return",[560,812,813],{"class":574}," c",[560,815,723],{"class":570},[560,817,818],{"class":706},"json",[560,820,729],{"class":740},[560,822,823],{"class":706},"readMemoryLogs",[560,825,826],{"class":740},"())\n",[560,828,830,832],{"class":562,"line":829},13,[560,831,752],{"class":570},[560,833,834],{"class":574},")\n",[550,836,839],{"className":552,"code":837,"filename":838,"language":555,"meta":556,"style":556},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nimport { createMemoryDrain } from 'evlog\u002Fmemory'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createMemoryDrain())\n})\n","Nuxt \u002F Nitro",[485,840,841,846,864,868,892,922],{"__ignoreMap":556},[560,842,843],{"class":562,"line":563},[560,844,845],{"class":614},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[560,847,848,850,852,854,856,858,860,862],{"class":562,"line":618},[560,849,567],{"class":566},[560,851,571],{"class":570},[560,853,575],{"class":574},[560,855,584],{"class":570},[560,857,587],{"class":566},[560,859,590],{"class":570},[560,861,594],{"class":593},[560,863,597],{"class":570},[560,865,866],{"class":562,"line":639},[560,867,687],{"emptyLinePlaceholder":686},[560,869,870,873,876,879,881,883,886,888,890],{"class":562,"line":660},[560,871,872],{"class":566},"export",[560,874,875],{"class":566}," default",[560,877,878],{"class":706}," defineNitroPlugin",[560,880,729],{"class":574},[560,882,729],{"class":570},[560,884,885],{"class":794},"nitroApp",[560,887,798],{"class":570},[560,889,801],{"class":693},[560,891,804],{"class":570},[560,893,894,897,899,902,904,907,909,911,914,916,918,920],{"class":562,"line":683},[560,895,896],{"class":574},"  nitroApp",[560,898,723],{"class":570},[560,900,901],{"class":574},"hooks",[560,903,723],{"class":570},[560,905,906],{"class":706},"hook",[560,908,729],{"class":740},[560,910,781],{"class":570},[560,912,913],{"class":593},"evlog:drain",[560,915,781],{"class":570},[560,917,578],{"class":570},[560,919,575],{"class":706},[560,921,826],{"class":740},[560,923,924,926],{"class":562,"line":690},[560,925,752],{"class":570},[560,927,834],{"class":574},[550,929,931],{"className":552,"code":930,"filename":172,"language":555,"meta":556,"style":556},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createMemoryDrain } from 'evlog\u002Fmemory'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: createMemoryDrain(),\n})\n",[485,932,933,938,958,976,980,1019,1036,1050],{"__ignoreMap":556},[560,934,935],{"class":562,"line":563},[560,936,937],{"class":614},"\u002F\u002F lib\u002Fevlog.ts\n",[560,939,940,942,944,947,949,951,953,956],{"class":562,"line":618},[560,941,567],{"class":566},[560,943,571],{"class":570},[560,945,946],{"class":574}," createEvlog",[560,948,584],{"class":570},[560,950,587],{"class":566},[560,952,590],{"class":570},[560,954,955],{"class":593},"evlog\u002Fnext",[560,957,597],{"class":570},[560,959,960,962,964,966,968,970,972,974],{"class":562,"line":639},[560,961,567],{"class":566},[560,963,571],{"class":570},[560,965,575],{"class":574},[560,967,584],{"class":570},[560,969,587],{"class":566},[560,971,590],{"class":570},[560,973,594],{"class":593},[560,975,597],{"class":570},[560,977,978],{"class":562,"line":660},[560,979,687],{"emptyLinePlaceholder":686},[560,981,982,984,987,989,992,994,997,999,1002,1004,1007,1009,1012,1014,1016],{"class":562,"line":683},[560,983,872],{"class":566},[560,985,986],{"class":693}," const",[560,988,571],{"class":570},[560,990,991],{"class":574}," withEvlog",[560,993,578],{"class":570},[560,995,996],{"class":574}," useLogger",[560,998,578],{"class":570},[560,1000,1001],{"class":574}," log",[560,1003,578],{"class":570},[560,1005,1006],{"class":574}," createError ",[560,1008,752],{"class":570},[560,1010,1011],{"class":570}," =",[560,1013,946],{"class":706},[560,1015,729],{"class":574},[560,1017,1018],{"class":570},"{\n",[560,1020,1021,1024,1026,1028,1031,1033],{"class":562,"line":690},[560,1022,1023],{"class":740},"  service",[560,1025,744],{"class":570},[560,1027,590],{"class":570},[560,1029,1030],{"class":593},"my-app",[560,1032,781],{"class":570},[560,1034,1035],{"class":570},",\n",[560,1037,1038,1041,1043,1045,1048],{"class":562,"line":712},[560,1039,1040],{"class":740},"  drain",[560,1042,744],{"class":570},[560,1044,575],{"class":706},[560,1046,1047],{"class":574},"()",[560,1049,1035],{"class":570},[560,1051,1052,1054],{"class":562,"line":717},[560,1053,752],{"class":570},[560,1055,834],{"class":574},[550,1057,1059],{"className":552,"code":1058,"filename":197,"language":555,"meta":556,"style":556},"import { evlog } from 'evlog\u002Fexpress'\nimport { createMemoryDrain } from 'evlog\u002Fmemory'\n\napp.use(evlog({ drain: createMemoryDrain() }))\n",[485,1060,1061,1080,1098,1102],{"__ignoreMap":556},[560,1062,1063,1065,1067,1069,1071,1073,1075,1078],{"class":562,"line":563},[560,1064,567],{"class":566},[560,1066,571],{"class":570},[560,1068,646],{"class":574},[560,1070,584],{"class":570},[560,1072,587],{"class":566},[560,1074,590],{"class":570},[560,1076,1077],{"class":593},"evlog\u002Fexpress",[560,1079,597],{"class":570},[560,1081,1082,1084,1086,1088,1090,1092,1094,1096],{"class":562,"line":618},[560,1083,567],{"class":566},[560,1085,571],{"class":570},[560,1087,575],{"class":574},[560,1089,584],{"class":570},[560,1091,587],{"class":566},[560,1093,590],{"class":570},[560,1095,594],{"class":593},[560,1097,597],{"class":570},[560,1099,1100],{"class":562,"line":639},[560,1101,687],{"emptyLinePlaceholder":686},[560,1103,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1124,1126,1128],{"class":562,"line":660},[560,1105,720],{"class":574},[560,1107,723],{"class":570},[560,1109,726],{"class":706},[560,1111,729],{"class":574},[560,1113,732],{"class":706},[560,1115,729],{"class":574},[560,1117,737],{"class":570},[560,1119,741],{"class":740},[560,1121,744],{"class":570},[560,1123,575],{"class":706},[560,1125,749],{"class":574},[560,1127,752],{"class":570},[560,1129,755],{"class":574},[550,1131,1133],{"className":552,"code":1132,"filename":207,"language":555,"meta":556,"style":556},"import { evlog } from 'evlog\u002Ffastify'\nimport { createMemoryDrain } from 'evlog\u002Fmemory'\n\nawait app.register(evlog, { drain: createMemoryDrain() })\n",[485,1134,1135,1154,1172,1176],{"__ignoreMap":556},[560,1136,1137,1139,1141,1143,1145,1147,1149,1152],{"class":562,"line":563},[560,1138,567],{"class":566},[560,1140,571],{"class":570},[560,1142,646],{"class":574},[560,1144,584],{"class":570},[560,1146,587],{"class":566},[560,1148,590],{"class":570},[560,1150,1151],{"class":593},"evlog\u002Ffastify",[560,1153,597],{"class":570},[560,1155,1156,1158,1160,1162,1164,1166,1168,1170],{"class":562,"line":618},[560,1157,567],{"class":566},[560,1159,571],{"class":570},[560,1161,575],{"class":574},[560,1163,584],{"class":570},[560,1165,587],{"class":566},[560,1167,590],{"class":570},[560,1169,594],{"class":593},[560,1171,597],{"class":570},[560,1173,1174],{"class":562,"line":639},[560,1175,687],{"emptyLinePlaceholder":686},[560,1177,1178,1181,1184,1186,1189,1192,1194,1196,1198,1200,1202,1204,1206],{"class":562,"line":660},[560,1179,1180],{"class":566},"await",[560,1182,1183],{"class":574}," app",[560,1185,723],{"class":570},[560,1187,1188],{"class":706},"register",[560,1190,1191],{"class":574},"(evlog",[560,1193,578],{"class":570},[560,1195,571],{"class":570},[560,1197,741],{"class":740},[560,1199,744],{"class":570},[560,1201,575],{"class":706},[560,1203,749],{"class":574},[560,1205,752],{"class":570},[560,1207,834],{"class":574},[550,1209,1211],{"className":552,"code":1210,"filename":212,"language":555,"meta":556,"style":556},"import { evlog } from 'evlog\u002Felysia'\nimport { createMemoryDrain } from 'evlog\u002Fmemory'\n\napp.use(evlog({ drain: createMemoryDrain() }))\n",[485,1212,1213,1232,1250,1254],{"__ignoreMap":556},[560,1214,1215,1217,1219,1221,1223,1225,1227,1230],{"class":562,"line":563},[560,1216,567],{"class":566},[560,1218,571],{"class":570},[560,1220,646],{"class":574},[560,1222,584],{"class":570},[560,1224,587],{"class":566},[560,1226,590],{"class":570},[560,1228,1229],{"class":593},"evlog\u002Felysia",[560,1231,597],{"class":570},[560,1233,1234,1236,1238,1240,1242,1244,1246,1248],{"class":562,"line":618},[560,1235,567],{"class":566},[560,1237,571],{"class":570},[560,1239,575],{"class":574},[560,1241,584],{"class":570},[560,1243,587],{"class":566},[560,1245,590],{"class":570},[560,1247,594],{"class":593},[560,1249,597],{"class":570},[560,1251,1252],{"class":562,"line":639},[560,1253,687],{"emptyLinePlaceholder":686},[560,1255,1256,1258,1260,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280],{"class":562,"line":660},[560,1257,720],{"class":574},[560,1259,723],{"class":570},[560,1261,726],{"class":706},[560,1263,729],{"class":574},[560,1265,732],{"class":706},[560,1267,729],{"class":574},[560,1269,737],{"class":570},[560,1271,741],{"class":740},[560,1273,744],{"class":570},[560,1275,575],{"class":706},[560,1277,749],{"class":574},[560,1279,752],{"class":570},[560,1281,755],{"class":574},[550,1283,1285],{"className":552,"code":1284,"filename":192,"language":555,"meta":556,"style":556},"import { createMemoryDrain } from 'evlog\u002Fmemory'\n\nEvlogModule.forRoot({ drain: createMemoryDrain() })\n",[485,1286,1287,1305,1309],{"__ignoreMap":556},[560,1288,1289,1291,1293,1295,1297,1299,1301,1303],{"class":562,"line":563},[560,1290,567],{"class":566},[560,1292,571],{"class":570},[560,1294,575],{"class":574},[560,1296,584],{"class":570},[560,1298,587],{"class":566},[560,1300,590],{"class":570},[560,1302,594],{"class":593},[560,1304,597],{"class":570},[560,1306,1307],{"class":562,"line":618},[560,1308,687],{"emptyLinePlaceholder":686},[560,1310,1311,1314,1316,1319,1321,1323,1325,1327,1329,1331,1333],{"class":562,"line":639},[560,1312,1313],{"class":574},"EvlogModule",[560,1315,723],{"class":570},[560,1317,1318],{"class":706},"forRoot",[560,1320,729],{"class":574},[560,1322,737],{"class":570},[560,1324,741],{"class":740},[560,1326,744],{"class":570},[560,1328,575],{"class":706},[560,1330,749],{"class":574},[560,1332,752],{"class":570},[560,1334,834],{"class":574},[550,1336,1338],{"className":552,"code":1337,"filename":227,"language":555,"meta":556,"style":556},"import { createMemoryDrain } from 'evlog\u002Fmemory'\n\ninitLogger({ drain: createMemoryDrain() })\n",[485,1339,1340,1358,1362],{"__ignoreMap":556},[560,1341,1342,1344,1346,1348,1350,1352,1354,1356],{"class":562,"line":563},[560,1343,567],{"class":566},[560,1345,571],{"class":570},[560,1347,575],{"class":574},[560,1349,584],{"class":570},[560,1351,587],{"class":566},[560,1353,590],{"class":570},[560,1355,594],{"class":593},[560,1357,597],{"class":570},[560,1359,1360],{"class":562,"line":618},[560,1361,687],{"emptyLinePlaceholder":686},[560,1363,1364,1367,1369,1371,1373,1375,1377,1379,1381],{"class":562,"line":639},[560,1365,1366],{"class":706},"initLogger",[560,1368,729],{"class":574},[560,1370,737],{"class":570},[560,1372,741],{"class":740},[560,1374,744],{"class":570},[560,1376,575],{"class":706},[560,1378,749],{"class":574},[560,1380,752],{"class":570},[560,1382,834],{"class":574},[543,1384,1386],{"id":1385},"agent-access-via-http","Agent Access via HTTP",[471,1388,1389,1390,1393],{},"Expose a route so agents can retrieve structured logs during a local dev session. Use ",[485,1391,1392],{},"parseReadMemoryLogsQuery"," to let agents pass filter params directly as query strings:",[550,1395,1398],{"className":552,"code":1396,"filename":1397,"language":555,"meta":556,"style":556},"import { readMemoryLogs, parseReadMemoryLogsQuery } from 'evlog\u002Fmemory'\n\n\u002F\u002F Restrict to dev — agents hit this endpoint to retrieve logs\nif (process.env.NODE_ENV !== 'production') {\n  app.get('\u002F_evlog\u002Flogs', (c) => {\n    return c.json(readMemoryLogs(parseReadMemoryLogsQuery(c.req.query())))\n  })\n}\n","src\u002Findex.ts (Hono)",[485,1399,1400,1423,1427,1432,1465,1494,1530,1537],{"__ignoreMap":556},[560,1401,1402,1404,1406,1408,1410,1413,1415,1417,1419,1421],{"class":562,"line":563},[560,1403,567],{"class":566},[560,1405,571],{"class":570},[560,1407,581],{"class":574},[560,1409,578],{"class":570},[560,1411,1412],{"class":574}," parseReadMemoryLogsQuery",[560,1414,584],{"class":570},[560,1416,587],{"class":566},[560,1418,590],{"class":570},[560,1420,594],{"class":593},[560,1422,597],{"class":570},[560,1424,1425],{"class":562,"line":618},[560,1426,687],{"emptyLinePlaceholder":686},[560,1428,1429],{"class":562,"line":639},[560,1430,1431],{"class":614},"\u002F\u002F Restrict to dev — agents hit this endpoint to retrieve logs\n",[560,1433,1434,1437,1440,1442,1445,1447,1450,1453,1455,1458,1460,1463],{"class":562,"line":660},[560,1435,1436],{"class":566},"if",[560,1438,1439],{"class":574}," (process",[560,1441,723],{"class":570},[560,1443,1444],{"class":574},"env",[560,1446,723],{"class":570},[560,1448,1449],{"class":574},"NODE_ENV ",[560,1451,1452],{"class":570},"!==",[560,1454,590],{"class":570},[560,1456,1457],{"class":593},"production",[560,1459,781],{"class":570},[560,1461,1462],{"class":574},") ",[560,1464,1018],{"class":570},[560,1466,1467,1470,1472,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492],{"class":562,"line":683},[560,1468,1469],{"class":574},"  app",[560,1471,723],{"class":570},[560,1473,776],{"class":706},[560,1475,729],{"class":740},[560,1477,781],{"class":570},[560,1479,784],{"class":593},[560,1481,781],{"class":570},[560,1483,578],{"class":570},[560,1485,791],{"class":570},[560,1487,795],{"class":794},[560,1489,798],{"class":570},[560,1491,801],{"class":693},[560,1493,804],{"class":570},[560,1495,1496,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1522,1524,1527],{"class":562,"line":690},[560,1497,1498],{"class":566},"    return",[560,1500,813],{"class":574},[560,1502,723],{"class":570},[560,1504,818],{"class":706},[560,1506,729],{"class":740},[560,1508,823],{"class":706},[560,1510,729],{"class":740},[560,1512,1392],{"class":706},[560,1514,729],{"class":740},[560,1516,795],{"class":574},[560,1518,723],{"class":570},[560,1520,1521],{"class":574},"req",[560,1523,723],{"class":570},[560,1525,1526],{"class":706},"query",[560,1528,1529],{"class":740},"())))\n",[560,1531,1532,1535],{"class":562,"line":712},[560,1533,1534],{"class":570},"  }",[560,1536,834],{"class":740},[560,1538,1539],{"class":562,"line":717},[560,1540,1541],{"class":570},"}\n",[471,1543,1544,1545,1548,1549,1551,1552,1555,1556,1555,1559,1555,1562,1565,1566,723],{},"An agent can now call ",[485,1546,1547],{},"\u002F_evlog\u002Flogs?level=error&limit=50&since=2026-01-01T00:00:00Z"," and the query params are coerced to the correct types before being passed to ",[485,1550,823],{},". Supported query params: ",[485,1553,1554],{},"store",", ",[485,1557,1558],{},"since",[485,1560,1561],{},"until",[485,1563,1564],{},"level"," (comma-separated for multiple), ",[485,1567,1568],{},"limit",[471,1570,1571,1572,1577],{},"The response is a JSON array of ",[475,1573,1574],{"href":440},[485,1575,1576],{},"WideEvent"," objects — the same shape used by every other evlog adapter.",[543,1579,439],{"id":1580},"configuration",[1582,1583,274],"h3",{"id":1584},"options",[1586,1587,1588,1607],"table",{},[1589,1590,1591],"thead",{},[1592,1593,1594,1598,1601,1604],"tr",{},[1595,1596,1597],"th",{},"Option",[1595,1599,1600],{},"Type",[1595,1602,1603],{},"Default",[1595,1605,1606],{},"Description",[1608,1609,1610,1631],"tbody",{},[1592,1611,1612,1618,1623,1628],{},[1613,1614,1615],"td",{},[485,1616,1617],{},"maxEvents",[1613,1619,1620],{},[485,1621,1622],{},"number",[1613,1624,1625],{},[485,1626,1627],{},"1000",[1613,1629,1630],{},"Maximum events to keep in the ring buffer (oldest are dropped)",[1592,1632,1633,1637,1642,1647],{},[1613,1634,1635],{},[485,1636,1554],{},[1613,1638,1639],{},[485,1640,1641],{},"string",[1613,1643,1644],{},[485,1645,1646],{},"'default'",[1613,1648,1649],{},"Named buffer key — multiple drains sharing the same key share the same buffer",[550,1651,1654],{"className":552,"code":1652,"filename":1653,"language":555,"meta":556,"style":556},"\u002F\u002F Keep only the last 500 events\ncreateMemoryDrain({ maxEvents: 500 })\n\n\u002F\u002F Use a named store for isolation\ncreateMemoryDrain({ store: 'my-service' })\n","server\u002Fplugins\u002Fevlog-drain.ts",[485,1655,1656,1661,1683,1687,1692],{"__ignoreMap":556},[560,1657,1658],{"class":562,"line":563},[560,1659,1660],{"class":614},"\u002F\u002F Keep only the last 500 events\n",[560,1662,1663,1666,1668,1670,1673,1675,1679,1681],{"class":562,"line":618},[560,1664,1665],{"class":706},"createMemoryDrain",[560,1667,729],{"class":574},[560,1669,737],{"class":570},[560,1671,1672],{"class":740}," maxEvents",[560,1674,744],{"class":570},[560,1676,1678],{"class":1677},"sbssI"," 500",[560,1680,584],{"class":570},[560,1682,834],{"class":574},[560,1684,1685],{"class":562,"line":639},[560,1686,687],{"emptyLinePlaceholder":686},[560,1688,1689],{"class":562,"line":660},[560,1690,1691],{"class":614},"\u002F\u002F Use a named store for isolation\n",[560,1693,1694,1696,1698,1700,1703,1705,1707,1710,1712,1714],{"class":562,"line":683},[560,1695,1665],{"class":706},[560,1697,729],{"class":574},[560,1699,737],{"class":570},[560,1701,1702],{"class":740}," store",[560,1704,744],{"class":570},[560,1706,590],{"class":570},[560,1708,1709],{"class":593},"my-service",[560,1711,781],{"class":570},[560,1713,584],{"class":570},[560,1715,834],{"class":574},[1582,1717,1719],{"id":1718},"environment-variables","Environment Variables",[1586,1721,1722,1731],{},[1589,1723,1724],{},[1592,1725,1726,1729],{},[1595,1727,1728],{},"Variable",[1595,1730,1606],{},[1608,1732,1733,1745],{},[1592,1734,1735,1740],{},[1613,1736,1737],{},[485,1738,1739],{},"EVLOG_MEMORY_STORE",[1613,1741,1742,1743,798],{},"Named buffer key (default: ",[485,1744,1646],{},[1592,1746,1747,1752],{},[1613,1748,1749],{},[485,1750,1751],{},"EVLOG_MEMORY_MAX_EVENTS",[1613,1753,1754,1755,798],{},"Ring buffer size (default: ",[485,1756,1627],{},[471,1758,1759,1760,1763],{},"Configuration priority matches other adapters: overrides → ",[485,1761,1762],{},"runtimeConfig.evlog.memory"," → env vars.",[1582,1765,1767],{"id":1766},"named-stores","Named Stores",[471,1769,1770],{},"Use named stores to isolate events from different services or for testing:",[550,1772,1774],{"className":552,"code":1773,"filename":554,"language":555,"meta":556,"style":556},"import { createMemoryDrain, readMemoryLogs, clearMemoryLogs } from 'evlog\u002Fmemory'\n\n\u002F\u002F Two separate buffers\nconst authDrain = createMemoryDrain({ store: 'auth' })\nconst apiDrain = createMemoryDrain({ store: 'api' })\n\n\u002F\u002F Read from a specific store\nconst authErrors = readMemoryLogs({ store: 'auth', level: 'error' })\n\n\u002F\u002F Clear a store (useful in tests)\nclearMemoryLogs('auth')\n",[485,1775,1776,1803,1807,1812,1842,1872,1876,1881,1924,1928,1933],{"__ignoreMap":556},[560,1777,1778,1780,1782,1784,1786,1788,1790,1793,1795,1797,1799,1801],{"class":562,"line":563},[560,1779,567],{"class":566},[560,1781,571],{"class":570},[560,1783,575],{"class":574},[560,1785,578],{"class":570},[560,1787,581],{"class":574},[560,1789,578],{"class":570},[560,1791,1792],{"class":574}," clearMemoryLogs",[560,1794,584],{"class":570},[560,1796,587],{"class":566},[560,1798,590],{"class":570},[560,1800,594],{"class":593},[560,1802,597],{"class":570},[560,1804,1805],{"class":562,"line":618},[560,1806,687],{"emptyLinePlaceholder":686},[560,1808,1809],{"class":562,"line":639},[560,1810,1811],{"class":614},"\u002F\u002F Two separate buffers\n",[560,1813,1814,1816,1819,1821,1823,1825,1827,1829,1831,1833,1836,1838,1840],{"class":562,"line":660},[560,1815,694],{"class":693},[560,1817,1818],{"class":574}," authDrain ",[560,1820,700],{"class":570},[560,1822,575],{"class":706},[560,1824,729],{"class":574},[560,1826,737],{"class":570},[560,1828,1702],{"class":740},[560,1830,744],{"class":570},[560,1832,590],{"class":570},[560,1834,1835],{"class":593},"auth",[560,1837,781],{"class":570},[560,1839,584],{"class":570},[560,1841,834],{"class":574},[560,1843,1844,1846,1849,1851,1853,1855,1857,1859,1861,1863,1866,1868,1870],{"class":562,"line":683},[560,1845,694],{"class":693},[560,1847,1848],{"class":574}," apiDrain ",[560,1850,700],{"class":570},[560,1852,575],{"class":706},[560,1854,729],{"class":574},[560,1856,737],{"class":570},[560,1858,1702],{"class":740},[560,1860,744],{"class":570},[560,1862,590],{"class":570},[560,1864,1865],{"class":593},"api",[560,1867,781],{"class":570},[560,1869,584],{"class":570},[560,1871,834],{"class":574},[560,1873,1874],{"class":562,"line":690},[560,1875,687],{"emptyLinePlaceholder":686},[560,1877,1878],{"class":562,"line":712},[560,1879,1880],{"class":614},"\u002F\u002F Read from a specific store\n",[560,1882,1883,1885,1888,1890,1892,1894,1896,1898,1900,1902,1904,1906,1908,1911,1913,1915,1918,1920,1922],{"class":562,"line":717},[560,1884,694],{"class":693},[560,1886,1887],{"class":574}," authErrors ",[560,1889,700],{"class":570},[560,1891,581],{"class":706},[560,1893,729],{"class":574},[560,1895,737],{"class":570},[560,1897,1702],{"class":740},[560,1899,744],{"class":570},[560,1901,590],{"class":570},[560,1903,1835],{"class":593},[560,1905,781],{"class":570},[560,1907,578],{"class":570},[560,1909,1910],{"class":740}," level",[560,1912,744],{"class":570},[560,1914,590],{"class":570},[560,1916,1917],{"class":593},"error",[560,1919,781],{"class":570},[560,1921,584],{"class":570},[560,1923,834],{"class":574},[560,1925,1926],{"class":562,"line":758},[560,1927,687],{"emptyLinePlaceholder":686},[560,1929,1930],{"class":562,"line":763},[560,1931,1932],{"class":614},"\u002F\u002F Clear a store (useful in tests)\n",[560,1934,1935,1938,1940,1942,1944,1946],{"class":562,"line":769},[560,1936,1937],{"class":706},"clearMemoryLogs",[560,1939,729],{"class":574},[560,1941,781],{"class":570},[560,1943,1835],{"class":593},[560,1945,781],{"class":570},[560,1947,834],{"class":574},[543,1949,1951],{"id":1950},"querying","Querying",[471,1953,1954,1956,1957,744],{},[485,1955,823],{}," supports the same filtering options as ",[485,1958,1959],{},"readFsLogs",[550,1961,1963],{"className":552,"code":1962,"filename":554,"language":555,"meta":556,"style":556},"import { readMemoryLogs } from 'evlog\u002Fmemory'\n\n\u002F\u002F All events\nconst all = readMemoryLogs()\n\n\u002F\u002F Errors only\nconst errors = readMemoryLogs({ level: 'error' })\n\n\u002F\u002F Last 10 minutes\nconst recent = readMemoryLogs({\n  since: new Date(Date.now() - 10 * 60 * 1000),\n})\n\n\u002F\u002F Custom predicate\nconst slow = readMemoryLogs({\n  filter: e => typeof e.duration === 'string' && e.duration.endsWith('s'),\n})\n\n\u002F\u002F Most recent 50 events\nconst latest = readMemoryLogs({ limit: 50 })\n",[485,1964,1965,1983,1987,1992,2005,2009,2014,2043,2047,2052,2067,2110,2116,2120,2126,2142,2202,2209,2214,2220],{"__ignoreMap":556},[560,1966,1967,1969,1971,1973,1975,1977,1979,1981],{"class":562,"line":563},[560,1968,567],{"class":566},[560,1970,571],{"class":570},[560,1972,581],{"class":574},[560,1974,584],{"class":570},[560,1976,587],{"class":566},[560,1978,590],{"class":570},[560,1980,594],{"class":593},[560,1982,597],{"class":570},[560,1984,1985],{"class":562,"line":618},[560,1986,687],{"emptyLinePlaceholder":686},[560,1988,1989],{"class":562,"line":639},[560,1990,1991],{"class":614},"\u002F\u002F All events\n",[560,1993,1994,1996,1999,2001,2003],{"class":562,"line":660},[560,1995,694],{"class":693},[560,1997,1998],{"class":574}," all ",[560,2000,700],{"class":570},[560,2002,581],{"class":706},[560,2004,709],{"class":574},[560,2006,2007],{"class":562,"line":683},[560,2008,687],{"emptyLinePlaceholder":686},[560,2010,2011],{"class":562,"line":690},[560,2012,2013],{"class":614},"\u002F\u002F Errors only\n",[560,2015,2016,2018,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041],{"class":562,"line":712},[560,2017,694],{"class":693},[560,2019,2020],{"class":574}," errors ",[560,2022,700],{"class":570},[560,2024,581],{"class":706},[560,2026,729],{"class":574},[560,2028,737],{"class":570},[560,2030,1910],{"class":740},[560,2032,744],{"class":570},[560,2034,590],{"class":570},[560,2036,1917],{"class":593},[560,2038,781],{"class":570},[560,2040,584],{"class":570},[560,2042,834],{"class":574},[560,2044,2045],{"class":562,"line":717},[560,2046,687],{"emptyLinePlaceholder":686},[560,2048,2049],{"class":562,"line":758},[560,2050,2051],{"class":614},"\u002F\u002F Last 10 minutes\n",[560,2053,2054,2056,2059,2061,2063,2065],{"class":562,"line":763},[560,2055,694],{"class":693},[560,2057,2058],{"class":574}," recent ",[560,2060,700],{"class":570},[560,2062,581],{"class":706},[560,2064,729],{"class":574},[560,2066,1018],{"class":570},[560,2068,2069,2072,2074,2076,2079,2082,2084,2087,2089,2092,2095,2098,2101,2103,2106,2108],{"class":562,"line":769},[560,2070,2071],{"class":740},"  since",[560,2073,744],{"class":570},[560,2075,703],{"class":570},[560,2077,2078],{"class":706}," Date",[560,2080,2081],{"class":574},"(Date",[560,2083,723],{"class":570},[560,2085,2086],{"class":706},"now",[560,2088,749],{"class":574},[560,2090,2091],{"class":570},"-",[560,2093,2094],{"class":1677}," 10",[560,2096,2097],{"class":570}," *",[560,2099,2100],{"class":1677}," 60",[560,2102,2097],{"class":570},[560,2104,2105],{"class":1677}," 1000",[560,2107,798],{"class":574},[560,2109,1035],{"class":570},[560,2111,2112,2114],{"class":562,"line":807},[560,2113,752],{"class":570},[560,2115,834],{"class":574},[560,2117,2118],{"class":562,"line":829},[560,2119,687],{"emptyLinePlaceholder":686},[560,2121,2123],{"class":562,"line":2122},14,[560,2124,2125],{"class":614},"\u002F\u002F Custom predicate\n",[560,2127,2129,2131,2134,2136,2138,2140],{"class":562,"line":2128},15,[560,2130,694],{"class":693},[560,2132,2133],{"class":574}," slow ",[560,2135,700],{"class":570},[560,2137,581],{"class":706},[560,2139,729],{"class":574},[560,2141,1018],{"class":570},[560,2143,2145,2148,2150,2153,2155,2158,2160,2162,2165,2168,2170,2172,2174,2177,2179,2181,2184,2186,2189,2191,2193,2196,2198,2200],{"class":562,"line":2144},16,[560,2146,2147],{"class":706},"  filter",[560,2149,744],{"class":570},[560,2151,2152],{"class":794}," e",[560,2154,801],{"class":693},[560,2156,2157],{"class":570}," typeof",[560,2159,2152],{"class":574},[560,2161,723],{"class":570},[560,2163,2164],{"class":574},"duration ",[560,2166,2167],{"class":570},"===",[560,2169,590],{"class":570},[560,2171,1641],{"class":593},[560,2173,781],{"class":570},[560,2175,2176],{"class":570}," &&",[560,2178,2152],{"class":574},[560,2180,723],{"class":570},[560,2182,2183],{"class":574},"duration",[560,2185,723],{"class":570},[560,2187,2188],{"class":706},"endsWith",[560,2190,729],{"class":574},[560,2192,781],{"class":570},[560,2194,2195],{"class":593},"s",[560,2197,781],{"class":570},[560,2199,798],{"class":574},[560,2201,1035],{"class":570},[560,2203,2205,2207],{"class":562,"line":2204},17,[560,2206,752],{"class":570},[560,2208,834],{"class":574},[560,2210,2212],{"class":562,"line":2211},18,[560,2213,687],{"emptyLinePlaceholder":686},[560,2215,2217],{"class":562,"line":2216},19,[560,2218,2219],{"class":614},"\u002F\u002F Most recent 50 events\n",[560,2221,2223,2225,2228,2230,2232,2234,2236,2239,2241,2244,2246],{"class":562,"line":2222},20,[560,2224,694],{"class":693},[560,2226,2227],{"class":574}," latest ",[560,2229,700],{"class":570},[560,2231,581],{"class":706},[560,2233,729],{"class":574},[560,2235,737],{"class":570},[560,2237,2238],{"class":740}," limit",[560,2240,744],{"class":570},[560,2242,2243],{"class":1677}," 50",[560,2245,584],{"class":570},[560,2247,834],{"class":574},[1582,2249,2251,2253],{"id":2250},"readmemorylogs-options",[485,2252,823],{}," Options",[1586,2255,2256,2266],{},[1589,2257,2258],{},[1592,2259,2260,2262,2264],{},[1595,2261,1597],{},[1595,2263,1600],{},[1595,2265,1606],{},[1608,2267,2268,2283,2300,2315,2329,2344],{},[1592,2269,2270,2274,2278],{},[1613,2271,2272],{},[485,2273,1554],{},[1613,2275,2276],{},[485,2277,1641],{},[1613,2279,2280,2281,798],{},"Named store to read from (default: ",[485,2282,1646],{},[1592,2284,2285,2289,2294],{},[1613,2286,2287],{},[485,2288,1558],{},[1613,2290,2291],{},[485,2292,2293],{},"Date | string",[1613,2295,2296,2297],{},"Only events with ",[485,2298,2299],{},"timestamp >= since",[1592,2301,2302,2306,2310],{},[1613,2303,2304],{},[485,2305,1561],{},[1613,2307,2308],{},[485,2309,2293],{},[1613,2311,2296,2312],{},[485,2313,2314],{},"timestamp \u003C= until",[1592,2316,2317,2321,2326],{},[1613,2318,2319],{},[485,2320,1564],{},[1613,2322,2323],{},[485,2324,2325],{},"LogLevel | LogLevel[]",[1613,2327,2328],{},"Filter by level",[1592,2330,2331,2336,2341],{},[1613,2332,2333],{},[485,2334,2335],{},"filter",[1613,2337,2338],{},[485,2339,2340],{},"(event) => boolean",[1613,2342,2343],{},"Custom predicate",[1592,2345,2346,2350,2354],{},[1613,2347,2348],{},[485,2349,1568],{},[1613,2351,2352],{},[485,2353,1622],{},[1613,2355,2356],{},"Return at most N most-recent matching events",[543,2358,2360],{"id":2359},"combining-with-network-drains","Combining with Network Drains",[471,2362,2363],{},"Use the memory adapter locally while sending to an observability platform in production:",[550,2365,2367],{"className":552,"code":2366,"filename":1653,"language":555,"meta":556,"style":556},"import { createMemoryDrain } from 'evlog\u002Fmemory'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nconst memory = createMemoryDrain()\nconst axiom = createAxiomDrain()\n\nconst drain = async (ctx) => {\n  if (process.env.NODE_ENV === 'development') {\n    await memory(ctx)\n  } else {\n    await axiom(ctx)\n  }\n}\n",[485,2368,2369,2387,2407,2411,2424,2437,2441,2464,2497,2511,2520,2533,2538],{"__ignoreMap":556},[560,2370,2371,2373,2375,2377,2379,2381,2383,2385],{"class":562,"line":563},[560,2372,567],{"class":566},[560,2374,571],{"class":570},[560,2376,575],{"class":574},[560,2378,584],{"class":570},[560,2380,587],{"class":566},[560,2382,590],{"class":570},[560,2384,594],{"class":593},[560,2386,597],{"class":570},[560,2388,2389,2391,2393,2396,2398,2400,2402,2405],{"class":562,"line":618},[560,2390,567],{"class":566},[560,2392,571],{"class":570},[560,2394,2395],{"class":574}," createAxiomDrain",[560,2397,584],{"class":570},[560,2399,587],{"class":566},[560,2401,590],{"class":570},[560,2403,2404],{"class":593},"evlog\u002Faxiom",[560,2406,597],{"class":570},[560,2408,2409],{"class":562,"line":639},[560,2410,687],{"emptyLinePlaceholder":686},[560,2412,2413,2415,2418,2420,2422],{"class":562,"line":660},[560,2414,694],{"class":693},[560,2416,2417],{"class":574}," memory ",[560,2419,700],{"class":570},[560,2421,575],{"class":706},[560,2423,709],{"class":574},[560,2425,2426,2428,2431,2433,2435],{"class":562,"line":683},[560,2427,694],{"class":693},[560,2429,2430],{"class":574}," axiom ",[560,2432,700],{"class":570},[560,2434,2395],{"class":706},[560,2436,709],{"class":574},[560,2438,2439],{"class":562,"line":690},[560,2440,687],{"emptyLinePlaceholder":686},[560,2442,2443,2445,2448,2450,2453,2455,2458,2460,2462],{"class":562,"line":712},[560,2444,694],{"class":693},[560,2446,2447],{"class":574}," drain ",[560,2449,700],{"class":570},[560,2451,2452],{"class":693}," async",[560,2454,791],{"class":570},[560,2456,2457],{"class":794},"ctx",[560,2459,798],{"class":570},[560,2461,801],{"class":693},[560,2463,804],{"class":570},[560,2465,2466,2469,2471,2474,2476,2478,2480,2483,2486,2488,2491,2493,2495],{"class":562,"line":717},[560,2467,2468],{"class":566},"  if",[560,2470,791],{"class":740},[560,2472,2473],{"class":574},"process",[560,2475,723],{"class":570},[560,2477,1444],{"class":574},[560,2479,723],{"class":570},[560,2481,2482],{"class":574},"NODE_ENV",[560,2484,2485],{"class":570}," ===",[560,2487,590],{"class":570},[560,2489,2490],{"class":593},"development",[560,2492,781],{"class":570},[560,2494,1462],{"class":740},[560,2496,1018],{"class":570},[560,2498,2499,2502,2505,2507,2509],{"class":562,"line":758},[560,2500,2501],{"class":566},"    await",[560,2503,2504],{"class":706}," memory",[560,2506,729],{"class":740},[560,2508,2457],{"class":574},[560,2510,834],{"class":740},[560,2512,2513,2515,2518],{"class":562,"line":763},[560,2514,1534],{"class":570},[560,2516,2517],{"class":566}," else",[560,2519,804],{"class":570},[560,2521,2522,2524,2527,2529,2531],{"class":562,"line":769},[560,2523,2501],{"class":566},[560,2525,2526],{"class":706}," axiom",[560,2528,729],{"class":740},[560,2530,2457],{"class":574},[560,2532,834],{"class":740},[560,2534,2535],{"class":562,"line":807},[560,2536,2537],{"class":570},"  }\n",[560,2539,2540],{"class":562,"line":829},[560,2541,1541],{"class":570},[543,2543,2545],{"id":2544},"ring-buffer-behaviour","Ring Buffer Behaviour",[471,2547,2548,2549,2552,2553,2555],{},"The buffer is ",[480,2550,2551],{},"bounded",": once it reaches ",[485,2554,1617],{},", the oldest events are discarded to make room for incoming ones. This means memory usage stays constant regardless of how long the service runs.",[550,2557,2563],{"className":2558,"code":2560,"filename":2561,"language":2562,"meta":556},[2559],"language-text","Write events 1–5 → [1, 2, 3, 4, 5]\nWrite event  6   → [2, 3, 4, 5, 6]  (1 is dropped)\nWrite events 7–8 → [4, 5, 6, 7, 8]\n","Ring buffer (maxEvents: 5)","text",[485,2564,2560],{"__ignoreMap":556},[2566,2567,2570,2571,2573,2574,723],"callout",{"color":2568,"icon":2569},"warning","i-lucide-triangle-alert","The in-memory buffer is lost when the worker\u002Fprocess restarts. For persistent storage, use the ",[475,2572,477],{"href":144}," (Node-based runtimes) or ",[475,2575,148],{"href":149},[543,2577,2579],{"id":2578},"direct-api-usage","Direct API Usage",[471,2581,2582],{},"For advanced use cases, call the underlying helpers directly:",[550,2584,2586],{"className":552,"code":2585,"filename":554,"language":555,"meta":556,"style":556},"import { writeToMemory, readMemoryLogs, clearMemoryLogs, parseReadMemoryLogsQuery } from 'evlog\u002Fmemory'\n\n\u002F\u002F Write events directly (skips the drain pipeline)\nwriteToMemory([event], { store: 'default', maxEvents: 1000 })\n\n\u002F\u002F Read the current buffer\nconst events = readMemoryLogs()\n\n\u002F\u002F Parse HTTP query params into ReadMemoryLogsOptions\nconst opts = parseReadMemoryLogsQuery({ level: 'error', limit: '50' })\n\u002F\u002F → { level: 'error', limit: 50 }\n\n\u002F\u002F Reset for tests\nclearMemoryLogs()\n",[485,2587,2588,2619,2623,2628,2663,2667,2672,2685,2689,2694,2736,2741,2745,2750],{"__ignoreMap":556},[560,2589,2590,2592,2594,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2617],{"class":562,"line":563},[560,2591,567],{"class":566},[560,2593,571],{"class":570},[560,2595,2596],{"class":574}," writeToMemory",[560,2598,578],{"class":570},[560,2600,581],{"class":574},[560,2602,578],{"class":570},[560,2604,1792],{"class":574},[560,2606,578],{"class":570},[560,2608,1412],{"class":574},[560,2610,584],{"class":570},[560,2612,587],{"class":566},[560,2614,590],{"class":570},[560,2616,594],{"class":593},[560,2618,597],{"class":570},[560,2620,2621],{"class":562,"line":618},[560,2622,687],{"emptyLinePlaceholder":686},[560,2624,2625],{"class":562,"line":639},[560,2626,2627],{"class":614},"\u002F\u002F Write events directly (skips the drain pipeline)\n",[560,2629,2630,2633,2636,2638,2640,2642,2644,2646,2649,2651,2653,2655,2657,2659,2661],{"class":562,"line":660},[560,2631,2632],{"class":706},"writeToMemory",[560,2634,2635],{"class":574},"([event]",[560,2637,578],{"class":570},[560,2639,571],{"class":570},[560,2641,1702],{"class":740},[560,2643,744],{"class":570},[560,2645,590],{"class":570},[560,2647,2648],{"class":593},"default",[560,2650,781],{"class":570},[560,2652,578],{"class":570},[560,2654,1672],{"class":740},[560,2656,744],{"class":570},[560,2658,2105],{"class":1677},[560,2660,584],{"class":570},[560,2662,834],{"class":574},[560,2664,2665],{"class":562,"line":683},[560,2666,687],{"emptyLinePlaceholder":686},[560,2668,2669],{"class":562,"line":690},[560,2670,2671],{"class":614},"\u002F\u002F Read the current buffer\n",[560,2673,2674,2676,2679,2681,2683],{"class":562,"line":712},[560,2675,694],{"class":693},[560,2677,2678],{"class":574}," events ",[560,2680,700],{"class":570},[560,2682,581],{"class":706},[560,2684,709],{"class":574},[560,2686,2687],{"class":562,"line":717},[560,2688,687],{"emptyLinePlaceholder":686},[560,2690,2691],{"class":562,"line":758},[560,2692,2693],{"class":614},"\u002F\u002F Parse HTTP query params into ReadMemoryLogsOptions\n",[560,2695,2696,2698,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723,2725,2727,2730,2732,2734],{"class":562,"line":763},[560,2697,694],{"class":693},[560,2699,2700],{"class":574}," opts ",[560,2702,700],{"class":570},[560,2704,1412],{"class":706},[560,2706,729],{"class":574},[560,2708,737],{"class":570},[560,2710,1910],{"class":740},[560,2712,744],{"class":570},[560,2714,590],{"class":570},[560,2716,1917],{"class":593},[560,2718,781],{"class":570},[560,2720,578],{"class":570},[560,2722,2238],{"class":740},[560,2724,744],{"class":570},[560,2726,590],{"class":570},[560,2728,2729],{"class":593},"50",[560,2731,781],{"class":570},[560,2733,584],{"class":570},[560,2735,834],{"class":574},[560,2737,2738],{"class":562,"line":769},[560,2739,2740],{"class":614},"\u002F\u002F → { level: 'error', limit: 50 }\n",[560,2742,2743],{"class":562,"line":807},[560,2744,687],{"emptyLinePlaceholder":686},[560,2746,2747],{"class":562,"line":829},[560,2748,2749],{"class":614},"\u002F\u002F Reset for tests\n",[560,2751,2752,2754],{"class":562,"line":2122},[560,2753,1937],{"class":706},[560,2755,709],{"class":574},[1582,2757,2759,2761],{"id":2758},"parsereadmemorylogsquery-coercion-rules",[485,2760,1392],{}," coercion rules",[1586,2763,2764,2780],{},[1589,2765,2766],{},[1592,2767,2768,2771,2777],{},[1595,2769,2770],{},"Query param",[1595,2772,2773,2774],{},"Type in ",[485,2775,2776],{},"ReadMemoryLogsOptions",[1595,2778,2779],{},"Notes",[1608,2781,2782,2795,2810,2824,2841],{},[1592,2783,2784,2788,2792],{},[1613,2785,2786],{},[485,2787,1554],{},[1613,2789,2790],{},[485,2791,1641],{},[1613,2793,2794],{},"Passed through as-is",[1592,2796,2797,2801,2805],{},[1613,2798,2799],{},[485,2800,1558],{},[1613,2802,2803],{},[485,2804,1641],{},[1613,2806,2807,2808],{},"ISO 8601 string — parsed by ",[485,2809,823],{},[1592,2811,2812,2816,2820],{},[1613,2813,2814],{},[485,2815,1561],{},[1613,2817,2818],{},[485,2819,1641],{},[1613,2821,2807,2822],{},[485,2823,823],{},[1592,2825,2826,2830,2834],{},[1613,2827,2828],{},[485,2829,1564],{},[1613,2831,2832],{},[485,2833,2325],{},[1613,2835,2836,2837,2840],{},"Comma-separated (",[485,2838,2839],{},"error,warn",") or repeated array; invalid values are dropped",[1592,2842,2843,2847,2851],{},[1613,2844,2845],{},[485,2846,1568],{},[1613,2848,2849],{},[485,2850,1622],{},[1613,2852,2853,2856],{},[485,2854,2855],{},"parseInt","; NaN → omitted",[543,2858,2860],{"id":2859},"next-steps","Next Steps",[2862,2863,2864,2870,2876,2882],"ul",{},[508,2865,2866,2869],{},[475,2867,2868],{"href":144},"File System Adapter"," - Persistent local logs for Node-based runtimes",[508,2871,2872,2875],{},[475,2873,2874],{"href":149},"NuxtHub Adapter"," - Database-backed storage for Cloudflare D1",[508,2877,2878,2881],{},[475,2879,2880],{"href":431},"Pipeline"," - Add batching and retry to any drain",[508,2883,2884,2887],{},[475,2885,2886],{"href":426},"Custom Adapters"," - Build your own adapter",[2889,2890,2891],"style",{},"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 .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 .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":556,"searchDepth":618,"depth":618,"links":2893},[2894,2895,2896,2897,2902,2906,2907,2908,2912],{"id":545,"depth":618,"text":20},{"id":600,"depth":618,"text":25},{"id":1385,"depth":618,"text":1386},{"id":1580,"depth":618,"text":439,"children":2898},[2899,2900,2901],{"id":1584,"depth":639,"text":274},{"id":1718,"depth":639,"text":1719},{"id":1766,"depth":639,"text":1767},{"id":1950,"depth":618,"text":1951,"children":2903},[2904],{"id":2250,"depth":639,"text":2905},"readMemoryLogs Options",{"id":2359,"depth":618,"text":2360},{"id":2544,"depth":618,"text":2545},{"id":2578,"depth":618,"text":2579,"children":2909},[2910],{"id":2758,"depth":639,"text":2911},"parseReadMemoryLogsQuery coercion rules",{"id":2859,"depth":618,"text":2860},"Store wide events in an in-memory ring buffer. Works in any runtime — including Cloudflare Workers (workerd) — where the file system is unavailable.","md",[2916,2919],{"label":2868,"icon":146,"to":144,"color":2917,"variant":2918},"neutral","subtle",{"label":2920,"icon":28,"to":203,"color":2917,"variant":2918},"Hono Integration",{},{"title":153,"icon":156},{"title":466,"description":2913},"pmz6OAOR4dEjwfajkTGG5hNuXCLriCM0PDIzWLZ_y9g",[2926,2928],{"title":148,"path":149,"stem":150,"description":2927,"icon":151,"children":-1},"Self-hosted log retention for evlog using NuxtHub database storage. Store, query, and automatically clean up your structured logs with zero external dependencies.",{"title":36,"path":163,"stem":164,"description":2929,"icon":165,"children":-1},"evlog supports every major TypeScript framework. Choose your stack and get started in minutes.",1784209298106]