[{"data":1,"prerenderedAt":2770},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-self-hosted-fs":602,"-integrate-adapters-self-hosted-fs-surround":2765},[4,35,85,138,318,479,538,577],{"title":5,"path":6,"stem":7,"children":8,"page":34},"Start","\u002Fstart","1.start",[9,14,19,24,29],{"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",{"title":30,"path":31,"stem":32,"icon":33},"Choose your logger","\u002Fstart\u002Ftypescript-logging-library","1.start\u002F5.typescript-logging-library","i-lucide-file-code",false,{"title":36,"path":37,"stem":38,"children":39,"page":34},"Learn","\u002Flearn","2.learn",[40,45,50,55,60,65,70,75,80],{"title":41,"path":42,"stem":43,"icon":44},"Overview","\u002Flearn\u002Foverview","2.learn\u002F0.overview","i-lucide-list",{"title":46,"path":47,"stem":48,"icon":49},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":51,"path":52,"stem":53,"icon":54},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":56,"path":57,"stem":58,"icon":59},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":61,"path":62,"stem":63,"icon":64},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":66,"path":67,"stem":68,"icon":69},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling","i-lucide-filter",{"title":71,"path":72,"stem":73,"icon":74},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":76,"path":77,"stem":78,"icon":79},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":81,"path":82,"stem":83,"icon":84},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs","i-lucide-book-open",{"title":86,"path":87,"stem":88,"children":89,"page":34},"CLI","\u002Fcli","3.cli",[90,93,98,103,108,113,118,123,128,133],{"title":41,"path":91,"stem":92,"icon":49},"\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":94,"path":95,"stem":96,"icon":97},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":99,"path":100,"stem":101,"icon":102},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":104,"path":105,"stem":106,"icon":107},"Rules","\u002Fcli\u002Frules","3.cli\u002F3.rules","i-lucide-list-checks",{"title":109,"path":110,"stem":111,"icon":112},"Scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring","i-lucide-gauge",{"title":114,"path":115,"stem":116,"icon":117},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":119,"path":120,"stem":121,"icon":122},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":124,"path":125,"stem":126,"icon":127},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":129,"path":130,"stem":131,"icon":132},"agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents","i-lucide-bot",{"title":134,"path":135,"stem":136,"icon":137},"Observability Score","\u002Fcli\u002Fobservability-score","3.cli\u002F9.observability-score","i-lucide-activity",{"title":139,"path":140,"stem":141,"children":142,"page":34},"Integrate","\u002Fintegrate","4.integrate",[143,147,230],{"title":41,"path":144,"stem":145,"icon":146},"\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":148,"path":149,"stem":150,"children":151,"page":34},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[152,155,185,210],{"title":41,"path":153,"stem":154,"icon":44},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview",{"title":156,"path":157,"stem":158,"children":159,"page":34},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[160,165,170,175,180],{"title":161,"path":162,"stem":163,"icon":164},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":166,"path":167,"stem":168,"icon":169},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":171,"path":172,"stem":173,"icon":174},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":176,"path":177,"stem":178,"icon":179},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":181,"path":182,"stem":183,"icon":184},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":186,"path":187,"stem":188,"children":189,"page":34},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[190,195,200,205],{"title":191,"path":192,"stem":193,"icon":194},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":196,"path":197,"stem":198,"icon":199},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":201,"path":202,"stem":203,"icon":204},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":206,"path":207,"stem":208,"icon":209},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":211,"path":212,"stem":213,"children":214,"page":34},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[215,220,225],{"title":216,"path":217,"stem":218,"icon":219},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":221,"path":222,"stem":223,"icon":224},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":226,"path":227,"stem":228,"icon":229},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":231,"path":232,"stem":233,"children":234,"page":34},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[235,239,244,249,254,259,264,269,274,279,284,289,294,299,303,308,313],{"title":41,"path":236,"stem":237,"icon":238},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":240,"path":241,"stem":242,"icon":243},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":245,"path":246,"stem":247,"icon":248},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":250,"path":251,"stem":252,"icon":253},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":255,"path":256,"stem":257,"icon":258},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":260,"path":261,"stem":262,"icon":263},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":265,"path":266,"stem":267,"icon":268},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":270,"path":271,"stem":272,"icon":273},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":275,"path":276,"stem":277,"icon":278},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":280,"path":281,"stem":282,"icon":283},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":285,"path":286,"stem":287,"icon":288},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":290,"path":291,"stem":292,"icon":293},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":295,"path":296,"stem":297,"icon":298},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":300,"path":301,"stem":302,"icon":79},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":304,"path":305,"stem":306,"icon":307},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":309,"path":310,"stem":311,"icon":312},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":314,"path":315,"stem":316,"icon":317},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":319,"path":320,"stem":321,"children":322,"page":34},"Use Cases","\u002Fuse-cases","5.use-cases",[323,326,331,359,386,418,439,444,449,453],{"title":41,"path":324,"stem":325,"icon":107},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":327,"path":328,"stem":329,"icon":330},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":332,"icon":333,"path":334,"stem":335,"children":336,"page":34},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[337,340,345,350,355],{"title":41,"path":338,"stem":339,"icon":44},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":341,"path":342,"stem":343,"icon":344},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":346,"path":347,"stem":348,"icon":349},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":351,"path":352,"stem":353,"icon":354},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":356,"path":357,"stem":358,"icon":137},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry",{"title":360,"icon":361,"path":362,"stem":363,"children":364,"page":34},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[365,368,373,378,382],{"title":41,"path":366,"stem":367,"icon":44},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":369,"path":370,"stem":371,"icon":372},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":374,"path":375,"stem":376,"icon":377},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":379,"path":380,"stem":381,"icon":330},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":383,"path":384,"stem":385,"icon":112},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance",{"title":387,"icon":388,"path":389,"stem":390,"children":391,"page":34},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[392,395,400,405,410,414],{"title":41,"path":393,"stem":394,"icon":44},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":396,"path":397,"stem":398,"icon":399},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":401,"path":402,"stem":403,"icon":404},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":406,"path":407,"stem":408,"icon":409},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":411,"path":412,"stem":413,"icon":388},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":415,"path":416,"stem":417,"icon":84},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes",{"title":356,"icon":112,"path":419,"stem":420,"children":421,"page":34},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[422,425,430,435],{"title":41,"path":423,"stem":424,"icon":44},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":426,"path":427,"stem":428,"icon":429},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":431,"path":432,"stem":433,"icon":434},"Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest","i-lucide-server",{"title":436,"path":437,"stem":438,"icon":84},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":440,"path":441,"stem":442,"icon":443},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":445,"path":446,"stem":447,"icon":448},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve","i-custom-eve",{"title":450,"path":451,"stem":452,"icon":434},"Node.js request logging","\u002Fuse-cases\u002Fstructured-logging-nodejs","5.use-cases\u002F6.structured-logging-nodejs",{"title":454,"icon":455,"path":456,"stem":457,"children":458,"page":34},"Signals","i-lucide-scan-search","\u002Fuse-cases\u002Fsignals","5.use-cases\u002F7.signals",[459,462,467,472,475],{"title":41,"path":460,"stem":461,"icon":44},"\u002Fuse-cases\u002Fsignals\u002Foverview","5.use-cases\u002F7.signals\u002F01.overview",{"title":463,"path":464,"stem":465,"icon":466},"What You Can Ask","\u002Fuse-cases\u002Fsignals\u002Fask","5.use-cases\u002F7.signals\u002F02.ask","i-lucide-message-circle-question",{"title":468,"path":469,"stem":470,"icon":471},"What It Costs","\u002Fuse-cases\u002Fsignals\u002Fcost","5.use-cases\u002F7.signals\u002F03.cost","i-lucide-coins",{"title":436,"path":473,"stem":474,"icon":84},"\u002Fuse-cases\u002Fsignals\u002Freference","5.use-cases\u002F7.signals\u002F04.reference",{"title":415,"path":476,"stem":477,"icon":478},"\u002Fuse-cases\u002Fsignals\u002Frecipes","5.use-cases\u002F7.signals\u002F05.recipes","i-lucide-lightbulb",{"title":480,"path":481,"stem":482,"children":483,"page":34},"Extend","\u002Fextend","6.extend",[484,488,493,498,502,507,511,515,519,523,528,533],{"title":41,"path":485,"stem":486,"icon":487},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":489,"path":490,"stem":491,"icon":492},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":494,"path":495,"stem":496,"icon":497},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":499,"path":500,"stem":501,"icon":492},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":503,"path":504,"stem":505,"icon":506},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":415,"path":508,"stem":509,"icon":510},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":512,"path":513,"stem":514,"icon":487},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":516,"path":517,"stem":518,"icon":443},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":520,"path":521,"stem":522,"icon":69},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling",{"title":524,"path":525,"stem":526,"icon":527},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":529,"path":530,"stem":531,"icon":532},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":534,"path":535,"stem":536,"icon":537},"Drain pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline","i-lucide-workflow",{"title":436,"path":539,"stem":540,"children":541,"page":34},"\u002Freference","7.reference",[542,546,551,554,559,563,568,572],{"title":41,"path":543,"stem":544,"icon":545},"\u002Freference\u002Foverview","7.reference\u002F0.overview","i-lucide-book-marked",{"title":547,"path":548,"stem":549,"icon":550},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":383,"path":552,"stem":553,"icon":112},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":555,"path":556,"stem":557,"icon":558},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":560,"path":561,"stem":562,"icon":388},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":564,"path":565,"stem":566,"icon":567},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":569,"path":570,"stem":571,"icon":443},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":573,"path":574,"stem":575,"icon":576},"Cost","\u002Freference\u002Fcost","7.reference\u002F7.cost","i-lucide-receipt",{"title":578,"path":579,"stem":580,"children":581,"page":34},"Compare","\u002Fcompare","8.compare",[582,586,590,594,598],{"title":583,"path":584,"stem":585,"icon":567},"evlog vs Pino","\u002Fcompare\u002Fpino","8.compare\u002F1.pino",{"title":587,"path":588,"stem":589,"icon":204},"evlog vs OpenTelemetry","\u002Fcompare\u002Fopentelemetry","8.compare\u002F2.opentelemetry",{"title":591,"path":592,"stem":593,"icon":567},"evlog vs LogTape","\u002Fcompare\u002Flogtape","8.compare\u002F3.logtape",{"title":595,"path":596,"stem":597,"icon":567},"evlog vs Winston: formats and request events","\u002Fcompare\u002Fwinston","8.compare\u002F4.winston",{"title":599,"path":600,"stem":601,"icon":567},"evlog vs Consola: reporters and request context","\u002Fcompare\u002Fconsola","8.compare\u002F5.consola",{"id":603,"title":604,"body":605,"description":2750,"extension":2751,"links":2752,"meta":2761,"navigation":2762,"path":217,"seo":2763,"stem":218,"__hash__":2764},"docs\u002F4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs.md","File System Adapter",{"type":606,"value":607,"toc":2730},"minimark",[608,612,644,690,694,697,740,743,746,1849,1866,1872,1876,1885,1892,1909,1912,1916,2019,2023,2181,2185,2195,2202,2206,2215,2219,2222,2378,2382,2386,2405,2409,2492,2496,2549,2553,2556,2683,2687,2697,2701,2726],[609,610,611],"p",{},"The File System adapter writes your wide events to local NDJSON files (one JSON object per line, one file per day). This enables:",[613,614,615,628,638],"ul",{},[616,617,618,622,623,627],"li",{},[619,620,621],"strong",{},"AI agent integration"," - point a skill to ",[624,625,626],"code",{},".evlog\u002Flogs\u002F"," to parse structured logs for debugging and pattern analysis",[616,629,630,633,634,637],{},[619,631,632],{},"Local dev debugging"," - persistent log history without scrolling the terminal (",[624,635,636],{},"tail -f .evlog\u002Flogs\u002F2026-03-14.jsonl",")",[616,639,640,643],{},[619,641,642],{},"Production backup"," - combine with a network drain (Axiom, OTLP) for local fallback",[645,646,649,652,676],"prompt",{":actions":647,"description":648,"icon":219},"[\"copy\",\"cursor\",\"claude\"]","Add the file system drain adapter",[609,650,651],{},"Add the file system drain adapter to write evlog wide events locally as NDJSON files.",[653,654,655,658,661,664,667,670,673],"ol",{},[616,656,657],{},"Identify which framework I'm using and follow its evlog integration pattern",[616,659,660],{},"Install evlog if not already installed",[616,662,663],{},"Import createFsDrain from 'evlog\u002Ffs'",[616,665,666],{},"Wire createFsDrain() into my framework's drain configuration",[616,668,669],{},"Logs are written to .evlog\u002Flogs\u002F by default (one file per day, auto .gitignore)",[616,671,672],{},"Optionally configure dir, maxFiles, maxSizePerFile, or pretty options",[616,674,675],{},"Test by triggering a request and checking .evlog\u002Flogs\u002F*.jsonl",[609,677,678,679,685,686],{},"Adapter docs: ",[680,681,682],"a",{"href":682,"rel":683},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs",[684],"nofollow","\nFramework setup: ",[680,687,688],{"href":688,"rel":689},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[684],[691,692,20],"h2",{"id":693},"installation",[609,695,696],{},"The File System adapter comes bundled with evlog:",[698,699,705],"pre",{"className":700,"code":701,"filename":702,"language":703,"meta":704,"style":704},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createFsDrain } from 'evlog\u002Ffs'\n","src\u002Findex.ts","typescript","",[624,706,707],{"__ignoreMap":704},[708,709,712,716,720,724,727,730,733,737],"span",{"class":710,"line":711},"line",1,[708,713,715],{"class":714},"s7zQu","import",[708,717,719],{"class":718},"sMK4o"," {",[708,721,723],{"class":722},"sTEyZ"," createFsDrain",[708,725,726],{"class":718}," }",[708,728,729],{"class":714}," from",[708,731,732],{"class":718}," '",[708,734,736],{"class":735},"sfazB","evlog\u002Ffs",[708,738,739],{"class":718},"'\n",[691,741,25],{"id":742},"quick-start",[609,744,745],{},"No credentials or environment variables needed. Just wire the drain to your framework:",[747,748,749,856,934,1068,1157,1256,1361,1420,1474,1533,1587,1641,1727,1801],"framework-tabs",{},[698,750,753],{"className":700,"code":751,"filename":240,"language":703,"meta":752,"style":704},"import { createFsDrain } from 'evlog\u002Ffs'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createFsDrain())\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[624,754,755,773,780,811,847],{"__ignoreMap":704},[708,756,757,759,761,763,765,767,769,771],{"class":710,"line":711},[708,758,715],{"class":714},[708,760,719],{"class":718},[708,762,723],{"class":722},[708,764,726],{"class":718},[708,766,729],{"class":714},[708,768,732],{"class":718},[708,770,736],{"class":735},[708,772,739],{"class":718},[708,774,776],{"class":710,"line":775},2,[708,777,779],{"emptyLinePlaceholder":778},true,"\n",[708,781,783,786,789,793,796,798,802,804,808],{"class":710,"line":782},3,[708,784,785],{"class":714},"export",[708,787,788],{"class":714}," default",[708,790,792],{"class":791},"s2Zo4"," defineNitroPlugin",[708,794,795],{"class":722},"(",[708,797,795],{"class":718},[708,799,801],{"class":800},"sHdIc","nitroApp",[708,803,637],{"class":718},[708,805,807],{"class":806},"spNyl"," =>",[708,809,810],{"class":718}," {\n",[708,812,814,817,820,823,825,828,831,834,837,839,842,844],{"class":710,"line":813},4,[708,815,816],{"class":722},"  nitroApp",[708,818,819],{"class":718},".",[708,821,822],{"class":722},"hooks",[708,824,819],{"class":718},[708,826,827],{"class":791},"hook",[708,829,795],{"class":830},"swJcz",[708,832,833],{"class":718},"'",[708,835,836],{"class":735},"evlog:drain",[708,838,833],{"class":718},[708,840,841],{"class":718},",",[708,843,723],{"class":791},[708,845,846],{"class":830},"())\n",[708,848,850,853],{"class":710,"line":849},5,[708,851,852],{"class":718},"}",[708,854,855],{"class":722},")\n",[698,857,858],{"className":700,"code":751,"filename":255,"language":703,"meta":752,"style":704},[624,859,860,878,882,902,928],{"__ignoreMap":704},[708,861,862,864,866,868,870,872,874,876],{"class":710,"line":711},[708,863,715],{"class":714},[708,865,719],{"class":718},[708,867,723],{"class":722},[708,869,726],{"class":718},[708,871,729],{"class":714},[708,873,732],{"class":718},[708,875,736],{"class":735},[708,877,739],{"class":718},[708,879,880],{"class":710,"line":775},[708,881,779],{"emptyLinePlaceholder":778},[708,883,884,886,888,890,892,894,896,898,900],{"class":710,"line":782},[708,885,785],{"class":714},[708,887,788],{"class":714},[708,889,792],{"class":791},[708,891,795],{"class":722},[708,893,795],{"class":718},[708,895,801],{"class":800},[708,897,637],{"class":718},[708,899,807],{"class":806},[708,901,810],{"class":718},[708,903,904,906,908,910,912,914,916,918,920,922,924,926],{"class":710,"line":813},[708,905,816],{"class":722},[708,907,819],{"class":718},[708,909,822],{"class":722},[708,911,819],{"class":718},[708,913,827],{"class":791},[708,915,795],{"class":830},[708,917,833],{"class":718},[708,919,836],{"class":735},[708,921,833],{"class":718},[708,923,841],{"class":718},[708,925,723],{"class":791},[708,927,846],{"class":830},[708,929,930,932],{"class":710,"line":849},[708,931,852],{"class":718},[708,933,855],{"class":722},[698,935,938],{"className":700,"code":936,"filename":245,"language":703,"meta":937,"style":704},"\u002F\u002F Node.js routes only; keep evlog\u002Ffs out of root instrumentation.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createFsDrain } from 'evlog\u002Ffs'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  drain: createFsDrain(),\n})\n","lib\u002Fevlog.ts",[624,939,940,946,966,984,988,1027,1046,1061],{"__ignoreMap":704},[708,941,942],{"class":710,"line":711},[708,943,945],{"class":944},"sHwdD","\u002F\u002F Node.js routes only; keep evlog\u002Ffs out of root instrumentation.ts\n",[708,947,948,950,952,955,957,959,961,964],{"class":710,"line":775},[708,949,715],{"class":714},[708,951,719],{"class":718},[708,953,954],{"class":722}," createEvlog",[708,956,726],{"class":718},[708,958,729],{"class":714},[708,960,732],{"class":718},[708,962,963],{"class":735},"evlog\u002Fnext",[708,965,739],{"class":718},[708,967,968,970,972,974,976,978,980,982],{"class":710,"line":782},[708,969,715],{"class":714},[708,971,719],{"class":718},[708,973,723],{"class":722},[708,975,726],{"class":718},[708,977,729],{"class":714},[708,979,732],{"class":718},[708,981,736],{"class":735},[708,983,739],{"class":718},[708,985,986],{"class":710,"line":813},[708,987,779],{"emptyLinePlaceholder":778},[708,989,990,992,995,997,1000,1002,1005,1007,1010,1012,1015,1017,1020,1022,1024],{"class":710,"line":849},[708,991,785],{"class":714},[708,993,994],{"class":806}," const",[708,996,719],{"class":718},[708,998,999],{"class":722}," withEvlog",[708,1001,841],{"class":718},[708,1003,1004],{"class":722}," useLogger",[708,1006,841],{"class":718},[708,1008,1009],{"class":722}," log",[708,1011,841],{"class":718},[708,1013,1014],{"class":722}," createError ",[708,1016,852],{"class":718},[708,1018,1019],{"class":718}," =",[708,1021,954],{"class":791},[708,1023,795],{"class":722},[708,1025,1026],{"class":718},"{\n",[708,1028,1030,1033,1036,1038,1041,1043],{"class":710,"line":1029},6,[708,1031,1032],{"class":830},"  service",[708,1034,1035],{"class":718},":",[708,1037,732],{"class":718},[708,1039,1040],{"class":735},"my-app",[708,1042,833],{"class":718},[708,1044,1045],{"class":718},",\n",[708,1047,1049,1052,1054,1056,1059],{"class":710,"line":1048},7,[708,1050,1051],{"class":830},"  drain",[708,1053,1035],{"class":718},[708,1055,723],{"class":791},[708,1057,1058],{"class":722},"()",[708,1060,1045],{"class":718},[708,1062,1064,1066],{"class":710,"line":1063},8,[708,1065,852],{"class":718},[708,1067,855],{"class":722},[698,1069,1072],{"className":700,"code":1070,"filename":250,"language":703,"meta":1071,"style":704},"import { createEvlogHooks } from 'evlog\u002Fsveltekit'\nimport { createFsDrain } from 'evlog\u002Ffs'\n\nexport const { handle, handleError } = createEvlogHooks({ drain: createFsDrain() })\n","src\u002Fhooks.server.ts",[624,1073,1074,1094,1112,1116],{"__ignoreMap":704},[708,1075,1076,1078,1080,1083,1085,1087,1089,1092],{"class":710,"line":711},[708,1077,715],{"class":714},[708,1079,719],{"class":718},[708,1081,1082],{"class":722}," createEvlogHooks",[708,1084,726],{"class":718},[708,1086,729],{"class":714},[708,1088,732],{"class":718},[708,1090,1091],{"class":735},"evlog\u002Fsveltekit",[708,1093,739],{"class":718},[708,1095,1096,1098,1100,1102,1104,1106,1108,1110],{"class":710,"line":775},[708,1097,715],{"class":714},[708,1099,719],{"class":718},[708,1101,723],{"class":722},[708,1103,726],{"class":718},[708,1105,729],{"class":714},[708,1107,732],{"class":718},[708,1109,736],{"class":735},[708,1111,739],{"class":718},[708,1113,1114],{"class":710,"line":782},[708,1115,779],{"emptyLinePlaceholder":778},[708,1117,1118,1120,1122,1124,1127,1129,1132,1134,1136,1138,1140,1143,1146,1148,1150,1153,1155],{"class":710,"line":813},[708,1119,785],{"class":714},[708,1121,994],{"class":806},[708,1123,719],{"class":718},[708,1125,1126],{"class":722}," handle",[708,1128,841],{"class":718},[708,1130,1131],{"class":722}," handleError ",[708,1133,852],{"class":718},[708,1135,1019],{"class":718},[708,1137,1082],{"class":791},[708,1139,795],{"class":722},[708,1141,1142],{"class":718},"{",[708,1144,1145],{"class":830}," drain",[708,1147,1035],{"class":718},[708,1149,723],{"class":791},[708,1151,1152],{"class":722},"() ",[708,1154,852],{"class":718},[708,1156,855],{"class":722},[698,1158,1160],{"className":700,"code":1159,"filename":260,"language":703,"meta":752,"style":704},"import { definePlugin } from 'nitro'\nimport { createFsDrain } from 'evlog\u002Ffs'\n\nexport default definePlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createFsDrain())\n})\n",[624,1161,1162,1182,1200,1204,1224,1250],{"__ignoreMap":704},[708,1163,1164,1166,1168,1171,1173,1175,1177,1180],{"class":710,"line":711},[708,1165,715],{"class":714},[708,1167,719],{"class":718},[708,1169,1170],{"class":722}," definePlugin",[708,1172,726],{"class":718},[708,1174,729],{"class":714},[708,1176,732],{"class":718},[708,1178,1179],{"class":735},"nitro",[708,1181,739],{"class":718},[708,1183,1184,1186,1188,1190,1192,1194,1196,1198],{"class":710,"line":775},[708,1185,715],{"class":714},[708,1187,719],{"class":718},[708,1189,723],{"class":722},[708,1191,726],{"class":718},[708,1193,729],{"class":714},[708,1195,732],{"class":718},[708,1197,736],{"class":735},[708,1199,739],{"class":718},[708,1201,1202],{"class":710,"line":782},[708,1203,779],{"emptyLinePlaceholder":778},[708,1205,1206,1208,1210,1212,1214,1216,1218,1220,1222],{"class":710,"line":813},[708,1207,785],{"class":714},[708,1209,788],{"class":714},[708,1211,1170],{"class":791},[708,1213,795],{"class":722},[708,1215,795],{"class":718},[708,1217,801],{"class":800},[708,1219,637],{"class":718},[708,1221,807],{"class":806},[708,1223,810],{"class":718},[708,1225,1226,1228,1230,1232,1234,1236,1238,1240,1242,1244,1246,1248],{"class":710,"line":849},[708,1227,816],{"class":722},[708,1229,819],{"class":718},[708,1231,822],{"class":722},[708,1233,819],{"class":718},[708,1235,827],{"class":791},[708,1237,795],{"class":830},[708,1239,833],{"class":718},[708,1241,836],{"class":735},[708,1243,833],{"class":718},[708,1245,841],{"class":718},[708,1247,723],{"class":791},[708,1249,846],{"class":830},[708,1251,1252,1254],{"class":710,"line":1029},[708,1253,852],{"class":718},[708,1255,855],{"class":722},[698,1257,1260],{"className":700,"code":1258,"filename":290,"language":703,"meta":1259,"style":704},"import { evlog } from 'evlog\u002Freact-router'\nimport { createFsDrain } from 'evlog\u002Ffs'\n\nexport const middleware: Route.MiddlewareFunction[] = [\n  evlog({ drain: createFsDrain() }),\n]\n","app\u002Froot.tsx",[624,1261,1262,1282,1300,1304,1333,1356],{"__ignoreMap":704},[708,1263,1264,1266,1268,1271,1273,1275,1277,1280],{"class":710,"line":711},[708,1265,715],{"class":714},[708,1267,719],{"class":718},[708,1269,1270],{"class":722}," evlog",[708,1272,726],{"class":718},[708,1274,729],{"class":714},[708,1276,732],{"class":718},[708,1278,1279],{"class":735},"evlog\u002Freact-router",[708,1281,739],{"class":718},[708,1283,1284,1286,1288,1290,1292,1294,1296,1298],{"class":710,"line":775},[708,1285,715],{"class":714},[708,1287,719],{"class":718},[708,1289,723],{"class":722},[708,1291,726],{"class":718},[708,1293,729],{"class":714},[708,1295,732],{"class":718},[708,1297,736],{"class":735},[708,1299,739],{"class":718},[708,1301,1302],{"class":710,"line":782},[708,1303,779],{"emptyLinePlaceholder":778},[708,1305,1306,1308,1310,1313,1315,1319,1321,1324,1327,1330],{"class":710,"line":813},[708,1307,785],{"class":714},[708,1309,994],{"class":806},[708,1311,1312],{"class":722}," middleware",[708,1314,1035],{"class":718},[708,1316,1318],{"class":1317},"sBMFI"," Route",[708,1320,819],{"class":718},[708,1322,1323],{"class":1317},"MiddlewareFunction",[708,1325,1326],{"class":722},"[] ",[708,1328,1329],{"class":718},"=",[708,1331,1332],{"class":722}," [\n",[708,1334,1335,1338,1340,1342,1344,1346,1348,1350,1352,1354],{"class":710,"line":849},[708,1336,1337],{"class":791},"  evlog",[708,1339,795],{"class":722},[708,1341,1142],{"class":718},[708,1343,1145],{"class":830},[708,1345,1035],{"class":718},[708,1347,723],{"class":791},[708,1349,1152],{"class":722},[708,1351,852],{"class":718},[708,1353,637],{"class":722},[708,1355,1045],{"class":718},[708,1357,1358],{"class":710,"line":1029},[708,1359,1360],{"class":722},"]\n",[698,1362,1364],{"className":700,"code":1363,"filename":275,"language":703,"meta":702,"style":704},"import { createFsDrain } from 'evlog\u002Ffs'\n\napp.use(evlog({ drain: createFsDrain() }))\n",[624,1365,1366,1384,1388],{"__ignoreMap":704},[708,1367,1368,1370,1372,1374,1376,1378,1380,1382],{"class":710,"line":711},[708,1369,715],{"class":714},[708,1371,719],{"class":718},[708,1373,723],{"class":722},[708,1375,726],{"class":718},[708,1377,729],{"class":714},[708,1379,732],{"class":718},[708,1381,736],{"class":735},[708,1383,739],{"class":718},[708,1385,1386],{"class":710,"line":775},[708,1387,779],{"emptyLinePlaceholder":778},[708,1389,1390,1393,1395,1398,1400,1403,1405,1407,1409,1411,1413,1415,1417],{"class":710,"line":782},[708,1391,1392],{"class":722},"app",[708,1394,819],{"class":718},[708,1396,1397],{"class":791},"use",[708,1399,795],{"class":722},[708,1401,1402],{"class":791},"evlog",[708,1404,795],{"class":722},[708,1406,1142],{"class":718},[708,1408,1145],{"class":830},[708,1410,1035],{"class":718},[708,1412,723],{"class":791},[708,1414,1152],{"class":722},[708,1416,852],{"class":718},[708,1418,1419],{"class":722},"))\n",[698,1421,1422],{"className":700,"code":1363,"filename":270,"language":703,"meta":702,"style":704},[624,1423,1424,1442,1446],{"__ignoreMap":704},[708,1425,1426,1428,1430,1432,1434,1436,1438,1440],{"class":710,"line":711},[708,1427,715],{"class":714},[708,1429,719],{"class":718},[708,1431,723],{"class":722},[708,1433,726],{"class":718},[708,1435,729],{"class":714},[708,1437,732],{"class":718},[708,1439,736],{"class":735},[708,1441,739],{"class":718},[708,1443,1444],{"class":710,"line":775},[708,1445,779],{"emptyLinePlaceholder":778},[708,1447,1448,1450,1452,1454,1456,1458,1460,1462,1464,1466,1468,1470,1472],{"class":710,"line":782},[708,1449,1392],{"class":722},[708,1451,819],{"class":718},[708,1453,1397],{"class":791},[708,1455,795],{"class":722},[708,1457,1402],{"class":791},[708,1459,795],{"class":722},[708,1461,1142],{"class":718},[708,1463,1145],{"class":830},[708,1465,1035],{"class":718},[708,1467,723],{"class":791},[708,1469,1152],{"class":722},[708,1471,852],{"class":718},[708,1473,1419],{"class":722},[698,1475,1477],{"className":700,"code":1476,"filename":280,"language":703,"meta":702,"style":704},"import { createFsDrain } from 'evlog\u002Ffs'\n\nawait app.register(evlog, { drain: createFsDrain() })\n",[624,1478,1479,1497,1501],{"__ignoreMap":704},[708,1480,1481,1483,1485,1487,1489,1491,1493,1495],{"class":710,"line":711},[708,1482,715],{"class":714},[708,1484,719],{"class":718},[708,1486,723],{"class":722},[708,1488,726],{"class":718},[708,1490,729],{"class":714},[708,1492,732],{"class":718},[708,1494,736],{"class":735},[708,1496,739],{"class":718},[708,1498,1499],{"class":710,"line":775},[708,1500,779],{"emptyLinePlaceholder":778},[708,1502,1503,1506,1509,1511,1514,1517,1519,1521,1523,1525,1527,1529,1531],{"class":710,"line":782},[708,1504,1505],{"class":714},"await",[708,1507,1508],{"class":722}," app",[708,1510,819],{"class":718},[708,1512,1513],{"class":791},"register",[708,1515,1516],{"class":722},"(evlog",[708,1518,841],{"class":718},[708,1520,719],{"class":718},[708,1522,1145],{"class":830},[708,1524,1035],{"class":718},[708,1526,723],{"class":791},[708,1528,1152],{"class":722},[708,1530,852],{"class":718},[708,1532,855],{"class":722},[698,1534,1535],{"className":700,"code":1363,"filename":285,"language":703,"meta":702,"style":704},[624,1536,1537,1555,1559],{"__ignoreMap":704},[708,1538,1539,1541,1543,1545,1547,1549,1551,1553],{"class":710,"line":711},[708,1540,715],{"class":714},[708,1542,719],{"class":718},[708,1544,723],{"class":722},[708,1546,726],{"class":718},[708,1548,729],{"class":714},[708,1550,732],{"class":718},[708,1552,736],{"class":735},[708,1554,739],{"class":718},[708,1556,1557],{"class":710,"line":775},[708,1558,779],{"emptyLinePlaceholder":778},[708,1560,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585],{"class":710,"line":782},[708,1562,1392],{"class":722},[708,1564,819],{"class":718},[708,1566,1397],{"class":791},[708,1568,795],{"class":722},[708,1570,1402],{"class":791},[708,1572,795],{"class":722},[708,1574,1142],{"class":718},[708,1576,1145],{"class":830},[708,1578,1035],{"class":718},[708,1580,723],{"class":791},[708,1582,1152],{"class":722},[708,1584,852],{"class":718},[708,1586,1419],{"class":722},[698,1588,1591],{"className":700,"code":1589,"filename":265,"language":703,"meta":1590,"style":704},"import { createFsDrain } from 'evlog\u002Ffs'\n\nEvlogModule.forRoot({ drain: createFsDrain() })\n","src\u002Fapp.module.ts",[624,1592,1593,1611,1615],{"__ignoreMap":704},[708,1594,1595,1597,1599,1601,1603,1605,1607,1609],{"class":710,"line":711},[708,1596,715],{"class":714},[708,1598,719],{"class":718},[708,1600,723],{"class":722},[708,1602,726],{"class":718},[708,1604,729],{"class":714},[708,1606,732],{"class":718},[708,1608,736],{"class":735},[708,1610,739],{"class":718},[708,1612,1613],{"class":710,"line":775},[708,1614,779],{"emptyLinePlaceholder":778},[708,1616,1617,1620,1622,1625,1627,1629,1631,1633,1635,1637,1639],{"class":710,"line":782},[708,1618,1619],{"class":722},"EvlogModule",[708,1621,819],{"class":718},[708,1623,1624],{"class":791},"forRoot",[708,1626,795],{"class":722},[708,1628,1142],{"class":718},[708,1630,1145],{"class":830},[708,1632,1035],{"class":718},[708,1634,723],{"class":791},[708,1636,1152],{"class":722},[708,1638,852],{"class":718},[708,1640,855],{"class":722},[698,1642,1645],{"className":700,"code":1643,"filename":309,"language":703,"meta":1644,"style":704},"import { withEvlog } from 'evlog\u002Forpc'\nimport { createFsDrain } from 'evlog\u002Ffs'\n\nconst handler = withEvlog(new RPCHandler(router), { drain: createFsDrain() })\n","server\u002Forpc.ts",[624,1646,1647,1666,1684,1688],{"__ignoreMap":704},[708,1648,1649,1651,1653,1655,1657,1659,1661,1664],{"class":710,"line":711},[708,1650,715],{"class":714},[708,1652,719],{"class":718},[708,1654,999],{"class":722},[708,1656,726],{"class":718},[708,1658,729],{"class":714},[708,1660,732],{"class":718},[708,1662,1663],{"class":735},"evlog\u002Forpc",[708,1665,739],{"class":718},[708,1667,1668,1670,1672,1674,1676,1678,1680,1682],{"class":710,"line":775},[708,1669,715],{"class":714},[708,1671,719],{"class":718},[708,1673,723],{"class":722},[708,1675,726],{"class":718},[708,1677,729],{"class":714},[708,1679,732],{"class":718},[708,1681,736],{"class":735},[708,1683,739],{"class":718},[708,1685,1686],{"class":710,"line":782},[708,1687,779],{"emptyLinePlaceholder":778},[708,1689,1690,1693,1696,1698,1700,1702,1705,1708,1711,1713,1715,1717,1719,1721,1723,1725],{"class":710,"line":813},[708,1691,1692],{"class":806},"const",[708,1694,1695],{"class":722}," handler ",[708,1697,1329],{"class":718},[708,1699,999],{"class":791},[708,1701,795],{"class":722},[708,1703,1704],{"class":718},"new",[708,1706,1707],{"class":791}," RPCHandler",[708,1709,1710],{"class":722},"(router)",[708,1712,841],{"class":718},[708,1714,719],{"class":718},[708,1716,1145],{"class":830},[708,1718,1035],{"class":718},[708,1720,723],{"class":791},[708,1722,1152],{"class":722},[708,1724,852],{"class":718},[708,1726,855],{"class":722},[698,1728,1731],{"className":700,"code":1729,"filename":295,"language":703,"meta":1730,"style":704},"import { withEvlog } from 'evlog\u002Fworkers'\nimport { createFsDrain } from 'evlog\u002Ffs'\n\nexport default withEvlog(handler, { drain: createFsDrain() })\n","src\u002Fworker.ts",[624,1732,1733,1752,1770,1774],{"__ignoreMap":704},[708,1734,1735,1737,1739,1741,1743,1745,1747,1750],{"class":710,"line":711},[708,1736,715],{"class":714},[708,1738,719],{"class":718},[708,1740,999],{"class":722},[708,1742,726],{"class":718},[708,1744,729],{"class":714},[708,1746,732],{"class":718},[708,1748,1749],{"class":735},"evlog\u002Fworkers",[708,1751,739],{"class":718},[708,1753,1754,1756,1758,1760,1762,1764,1766,1768],{"class":710,"line":775},[708,1755,715],{"class":714},[708,1757,719],{"class":718},[708,1759,723],{"class":722},[708,1761,726],{"class":718},[708,1763,729],{"class":714},[708,1765,732],{"class":718},[708,1767,736],{"class":735},[708,1769,739],{"class":718},[708,1771,1772],{"class":710,"line":782},[708,1773,779],{"emptyLinePlaceholder":778},[708,1775,1776,1778,1780,1782,1785,1787,1789,1791,1793,1795,1797,1799],{"class":710,"line":813},[708,1777,785],{"class":714},[708,1779,788],{"class":714},[708,1781,999],{"class":791},[708,1783,1784],{"class":722},"(handler",[708,1786,841],{"class":718},[708,1788,719],{"class":718},[708,1790,1145],{"class":830},[708,1792,1035],{"class":718},[708,1794,723],{"class":791},[708,1796,1152],{"class":722},[708,1798,852],{"class":718},[708,1800,855],{"class":722},[698,1802,1804],{"className":700,"code":1803,"filename":300,"language":703,"meta":704,"style":704},"import { createFsDrain } from 'evlog\u002Ffs'\n\ninitLogger({ drain: createFsDrain() })\n",[624,1805,1806,1824,1828],{"__ignoreMap":704},[708,1807,1808,1810,1812,1814,1816,1818,1820,1822],{"class":710,"line":711},[708,1809,715],{"class":714},[708,1811,719],{"class":718},[708,1813,723],{"class":722},[708,1815,726],{"class":718},[708,1817,729],{"class":714},[708,1819,732],{"class":718},[708,1821,736],{"class":735},[708,1823,739],{"class":718},[708,1825,1826],{"class":710,"line":775},[708,1827,779],{"emptyLinePlaceholder":778},[708,1829,1830,1833,1835,1837,1839,1841,1843,1845,1847],{"class":710,"line":782},[708,1831,1832],{"class":791},"initLogger",[708,1834,795],{"class":722},[708,1836,1142],{"class":718},[708,1838,1145],{"class":830},[708,1840,1035],{"class":718},[708,1842,723],{"class":791},[708,1844,1152],{"class":722},[708,1846,852],{"class":718},[708,1848,855],{"class":722},[1850,1851,1853,1854,1857,1858,1861,1862,1865],"callout",{"color":1852,"icon":13},"info","The FS adapter requires Node.js (",[624,1855,1856],{},"node:fs","). On the Edge runtime, or when its directory is not writable, it logs a one-time ",[624,1859,1860],{},"[evlog\u002Ffs]"," warning and skips writes, so attaching it on a serverless host is safe but pointless, since only the temp directory is writable there and it does not outlive the instance. Use ",[624,1863,1864],{},"evlog\u002Fmemory"," or an HTTP adapter for those.",[609,1867,1868,1869,1871],{},"Logs start appearing in ",[624,1870,626],{}," immediately.",[691,1873,1875],{"id":1874},"where-the-files-land","Where the files land",[698,1877,1883],{"className":1878,"code":1880,"filename":1881,"language":1882,"meta":704},[1879],"language-text",".evlog\u002F\n  logs\u002F\n    2026-03-14.jsonl    ← one file per day\n    2026-03-13.jsonl\n    2026-03-12.jsonl\n",".evlog\u002Flogs directory layout","text",[624,1884,1880],{"__ignoreMap":704},[609,1886,1887,1888,1891],{},"Each ",[624,1889,1890],{},".jsonl"," file contains one JSON object per line (NDJSON format), making it easy to parse, grep, and stream.",[1850,1893,1896,1897,1900,1901,1904,1905,1908],{"color":1894,"icon":1895},"success","i-lucide-git-branch","A ",[624,1898,1899],{},".gitignore"," is automatically created on first write, inside the ",[624,1902,1903],{},".evlog\u002F"," ancestor directory when present or in the configured ",[624,1906,1907],{},"dir"," otherwise. Log files are never committed to version control.",[691,1910,547],{"id":1911},"configuration",[1913,1914,346],"h3",{"id":1915},"options",[1917,1918,1919,1938],"table",{},[1920,1921,1922],"thead",{},[1923,1924,1925,1929,1932,1935],"tr",{},[1926,1927,1928],"th",{},"Option",[1926,1930,1931],{},"Type",[1926,1933,1934],{},"Default",[1926,1936,1937],{},"Description",[1939,1940,1941,1961,1981,1999],"tbody",{},[1923,1942,1943,1948,1953,1958],{},[1944,1945,1946],"td",{},[624,1947,1907],{},[1944,1949,1950],{},[624,1951,1952],{},"string",[1944,1954,1955],{},[624,1956,1957],{},"'.evlog\u002Flogs'",[1944,1959,1960],{},"Directory for log files",[1923,1962,1963,1968,1973,1978],{},[1944,1964,1965],{},[624,1966,1967],{},"maxFiles",[1944,1969,1970],{},[624,1971,1972],{},"number",[1944,1974,1975],{},[624,1976,1977],{},"undefined",[1944,1979,1980],{},"Max files to keep (auto-deletes oldest)",[1923,1982,1983,1988,1992,1996],{},[1944,1984,1985],{},[624,1986,1987],{},"maxSizePerFile",[1944,1989,1990],{},[624,1991,1972],{},[1944,1993,1994],{},[624,1995,1977],{},[1944,1997,1998],{},"Max bytes per file before rotating",[1923,2000,2001,2006,2011,2016],{},[1944,2002,2003],{},[624,2004,2005],{},"pretty",[1944,2007,2008],{},[624,2009,2010],{},"boolean",[1944,2012,2013],{},[624,2014,2015],{},"false",[1944,2017,2018],{},"Pretty-print JSON (multi-line, readable)",[1913,2020,2022],{"id":2021},"examples","Examples",[698,2024,2026],{"className":700,"code":2025,"filename":752,"language":703,"meta":704,"style":704},"\u002F\u002F Keep only the last 7 days of logs\ncreateFsDrain({ maxFiles: 7 })\n\n\u002F\u002F Rotate files at 10MB, keep 30 files\ncreateFsDrain({\n  maxSizePerFile: 10 * 1024 * 1024,\n  maxFiles: 30,\n})\n\n\u002F\u002F Pretty-print for human reading\ncreateFsDrain({ pretty: true })\n\n\u002F\u002F Custom directory\ncreateFsDrain({ dir: '\u002Fvar\u002Flog\u002Fmyapp' })\n",[624,2027,2028,2033,2055,2059,2064,2072,2094,2106,2112,2117,2123,2145,2150,2156],{"__ignoreMap":704},[708,2029,2030],{"class":710,"line":711},[708,2031,2032],{"class":944},"\u002F\u002F Keep only the last 7 days of logs\n",[708,2034,2035,2038,2040,2042,2045,2047,2051,2053],{"class":710,"line":775},[708,2036,2037],{"class":791},"createFsDrain",[708,2039,795],{"class":722},[708,2041,1142],{"class":718},[708,2043,2044],{"class":830}," maxFiles",[708,2046,1035],{"class":718},[708,2048,2050],{"class":2049},"sbssI"," 7",[708,2052,726],{"class":718},[708,2054,855],{"class":722},[708,2056,2057],{"class":710,"line":782},[708,2058,779],{"emptyLinePlaceholder":778},[708,2060,2061],{"class":710,"line":813},[708,2062,2063],{"class":944},"\u002F\u002F Rotate files at 10MB, keep 30 files\n",[708,2065,2066,2068,2070],{"class":710,"line":849},[708,2067,2037],{"class":791},[708,2069,795],{"class":722},[708,2071,1026],{"class":718},[708,2073,2074,2077,2079,2082,2085,2088,2090,2092],{"class":710,"line":1029},[708,2075,2076],{"class":830},"  maxSizePerFile",[708,2078,1035],{"class":718},[708,2080,2081],{"class":2049}," 10",[708,2083,2084],{"class":718}," *",[708,2086,2087],{"class":2049}," 1024",[708,2089,2084],{"class":718},[708,2091,2087],{"class":2049},[708,2093,1045],{"class":718},[708,2095,2096,2099,2101,2104],{"class":710,"line":1048},[708,2097,2098],{"class":830},"  maxFiles",[708,2100,1035],{"class":718},[708,2102,2103],{"class":2049}," 30",[708,2105,1045],{"class":718},[708,2107,2108,2110],{"class":710,"line":1063},[708,2109,852],{"class":718},[708,2111,855],{"class":722},[708,2113,2115],{"class":710,"line":2114},9,[708,2116,779],{"emptyLinePlaceholder":778},[708,2118,2120],{"class":710,"line":2119},10,[708,2121,2122],{"class":944},"\u002F\u002F Pretty-print for human reading\n",[708,2124,2126,2128,2130,2132,2135,2137,2141,2143],{"class":710,"line":2125},11,[708,2127,2037],{"class":791},[708,2129,795],{"class":722},[708,2131,1142],{"class":718},[708,2133,2134],{"class":830}," pretty",[708,2136,1035],{"class":718},[708,2138,2140],{"class":2139},"sfNiH"," true",[708,2142,726],{"class":718},[708,2144,855],{"class":722},[708,2146,2148],{"class":710,"line":2147},12,[708,2149,779],{"emptyLinePlaceholder":778},[708,2151,2153],{"class":710,"line":2152},13,[708,2154,2155],{"class":944},"\u002F\u002F Custom directory\n",[708,2157,2159,2161,2163,2165,2168,2170,2172,2175,2177,2179],{"class":710,"line":2158},14,[708,2160,2037],{"class":791},[708,2162,795],{"class":722},[708,2164,1142],{"class":718},[708,2166,2167],{"class":830}," dir",[708,2169,1035],{"class":718},[708,2171,732],{"class":718},[708,2173,2174],{"class":735},"\u002Fvar\u002Flog\u002Fmyapp",[708,2176,833],{"class":718},[708,2178,726],{"class":718},[708,2180,855],{"class":722},[1913,2182,2184],{"id":2183},"rotate-by-size-or-by-day","Rotate by size or by day",[609,2186,2187,2188,2191,2192,2194],{},"By default, a new file is created each day (",[624,2189,2190],{},"2026-03-14.jsonl","). When ",[624,2193,1987],{}," is set, the adapter creates suffixed files when the current file exceeds the limit:",[698,2196,2200],{"className":2197,"code":2198,"filename":2199,"language":1882,"meta":704},[1879],".evlog\u002Flogs\u002F\n  2026-03-14.jsonl      ← base file (full)\n  2026-03-14.1.jsonl    ← first rotation\n  2026-03-14.2.jsonl    ← second rotation\n","Rotated log files",[624,2201,2198],{"__ignoreMap":704},[1913,2203,2205],{"id":2204},"delete-old-files-on-a-schedule","Delete old files on a schedule",[609,2207,2208,2209,2211,2212,2214],{},"When ",[624,2210,1967],{}," is set, the adapter automatically deletes the oldest ",[624,2213,1890],{}," files after each write, keeping only the most recent files.",[691,2216,2218],{"id":2217},"write-to-disk-and-ship-to-a-service","Write to disk and ship to a service",[609,2220,2221],{},"Use the FS adapter alongside a network drain for local backup:",[698,2223,2225],{"className":700,"code":2224,"filename":752,"language":703,"meta":704,"style":704},"import { createFsDrain } from 'evlog\u002Ffs'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nconst fs = createFsDrain({ maxFiles: 7 })\nconst axiom = createAxiomDrain()\n\nconst drain = async (ctx) => {\n  await Promise.allSettled([fs(ctx), axiom(ctx)])\n}\n",[624,2226,2227,2245,2265,2269,2294,2308,2312,2336,2373],{"__ignoreMap":704},[708,2228,2229,2231,2233,2235,2237,2239,2241,2243],{"class":710,"line":711},[708,2230,715],{"class":714},[708,2232,719],{"class":718},[708,2234,723],{"class":722},[708,2236,726],{"class":718},[708,2238,729],{"class":714},[708,2240,732],{"class":718},[708,2242,736],{"class":735},[708,2244,739],{"class":718},[708,2246,2247,2249,2251,2254,2256,2258,2260,2263],{"class":710,"line":775},[708,2248,715],{"class":714},[708,2250,719],{"class":718},[708,2252,2253],{"class":722}," createAxiomDrain",[708,2255,726],{"class":718},[708,2257,729],{"class":714},[708,2259,732],{"class":718},[708,2261,2262],{"class":735},"evlog\u002Faxiom",[708,2264,739],{"class":718},[708,2266,2267],{"class":710,"line":782},[708,2268,779],{"emptyLinePlaceholder":778},[708,2270,2271,2273,2276,2278,2280,2282,2284,2286,2288,2290,2292],{"class":710,"line":813},[708,2272,1692],{"class":806},[708,2274,2275],{"class":722}," fs ",[708,2277,1329],{"class":718},[708,2279,723],{"class":791},[708,2281,795],{"class":722},[708,2283,1142],{"class":718},[708,2285,2044],{"class":830},[708,2287,1035],{"class":718},[708,2289,2050],{"class":2049},[708,2291,726],{"class":718},[708,2293,855],{"class":722},[708,2295,2296,2298,2301,2303,2305],{"class":710,"line":849},[708,2297,1692],{"class":806},[708,2299,2300],{"class":722}," axiom ",[708,2302,1329],{"class":718},[708,2304,2253],{"class":791},[708,2306,2307],{"class":722},"()\n",[708,2309,2310],{"class":710,"line":1029},[708,2311,779],{"emptyLinePlaceholder":778},[708,2313,2314,2316,2319,2321,2324,2327,2330,2332,2334],{"class":710,"line":1048},[708,2315,1692],{"class":806},[708,2317,2318],{"class":722}," drain ",[708,2320,1329],{"class":718},[708,2322,2323],{"class":806}," async",[708,2325,2326],{"class":718}," (",[708,2328,2329],{"class":800},"ctx",[708,2331,637],{"class":718},[708,2333,807],{"class":806},[708,2335,810],{"class":718},[708,2337,2338,2341,2344,2346,2349,2352,2355,2357,2359,2361,2363,2366,2368,2370],{"class":710,"line":1063},[708,2339,2340],{"class":714},"  await",[708,2342,2343],{"class":1317}," Promise",[708,2345,819],{"class":718},[708,2347,2348],{"class":791},"allSettled",[708,2350,2351],{"class":830},"([",[708,2353,2354],{"class":791},"fs",[708,2356,795],{"class":830},[708,2358,2329],{"class":722},[708,2360,637],{"class":830},[708,2362,841],{"class":718},[708,2364,2365],{"class":791}," axiom",[708,2367,795],{"class":830},[708,2369,2329],{"class":722},[708,2371,2372],{"class":830},")])\n",[708,2374,2375],{"class":710,"line":2114},[708,2376,2377],{"class":718},"}\n",[691,2379,2381],{"id":2380},"read-back-what-you-wrote","Read back what you wrote",[1913,2383,2385],{"id":2384},"stream-in-real-time","Stream in real-time",[698,2387,2392],{"className":2388,"code":2389,"filename":2390,"language":2391,"meta":704,"style":704},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","tail -f .evlog\u002Flogs\u002F2026-03-14.jsonl\n","Terminal","bash",[624,2393,2394],{"__ignoreMap":704},[708,2395,2396,2399,2402],{"class":710,"line":711},[708,2397,2398],{"class":1317},"tail",[708,2400,2401],{"class":735}," -f",[708,2403,2404],{"class":735}," .evlog\u002Flogs\u002F2026-03-14.jsonl\n",[1913,2406,2408],{"id":2407},"search-with-jq","Search with jq",[698,2410,2412],{"className":2388,"code":2411,"filename":2390,"language":2391,"meta":704,"style":704},"# Find errors\ncat .evlog\u002Flogs\u002F2026-03-14.jsonl | jq 'select(.level == \"error\")'\n\n# Slow requests (over 1s)\ncat .evlog\u002Flogs\u002F2026-03-14.jsonl | jq 'select(.durationMs > 1000)'\n\n# Requests by path\ncat .evlog\u002Flogs\u002F2026-03-14.jsonl | jq 'select(.path == \"\u002Fapi\u002Fcheckout\")'\n",[624,2413,2414,2419,2440,2444,2449,2466,2470,2475],{"__ignoreMap":704},[708,2415,2416],{"class":710,"line":711},[708,2417,2418],{"class":944},"# Find errors\n",[708,2420,2421,2424,2427,2430,2433,2435,2438],{"class":710,"line":775},[708,2422,2423],{"class":1317},"cat",[708,2425,2426],{"class":735}," .evlog\u002Flogs\u002F2026-03-14.jsonl",[708,2428,2429],{"class":718}," |",[708,2431,2432],{"class":1317}," jq",[708,2434,732],{"class":718},[708,2436,2437],{"class":735},"select(.level == \"error\")",[708,2439,739],{"class":718},[708,2441,2442],{"class":710,"line":782},[708,2443,779],{"emptyLinePlaceholder":778},[708,2445,2446],{"class":710,"line":813},[708,2447,2448],{"class":944},"# Slow requests (over 1s)\n",[708,2450,2451,2453,2455,2457,2459,2461,2464],{"class":710,"line":849},[708,2452,2423],{"class":1317},[708,2454,2426],{"class":735},[708,2456,2429],{"class":718},[708,2458,2432],{"class":1317},[708,2460,732],{"class":718},[708,2462,2463],{"class":735},"select(.durationMs > 1000)",[708,2465,739],{"class":718},[708,2467,2468],{"class":710,"line":1029},[708,2469,779],{"emptyLinePlaceholder":778},[708,2471,2472],{"class":710,"line":1048},[708,2473,2474],{"class":944},"# Requests by path\n",[708,2476,2477,2479,2481,2483,2485,2487,2490],{"class":710,"line":1063},[708,2478,2423],{"class":1317},[708,2480,2426],{"class":735},[708,2482,2429],{"class":718},[708,2484,2432],{"class":1317},[708,2486,732],{"class":718},[708,2488,2489],{"class":735},"select(.path == \"\u002Fapi\u002Fcheckout\")",[708,2491,739],{"class":718},[1913,2493,2495],{"id":2494},"search-with-grep","Search with grep",[698,2497,2499],{"className":2388,"code":2498,"filename":2390,"language":2391,"meta":704,"style":704},"# Find all errors\ngrep '\"level\":\"error\"' .evlog\u002Flogs\u002F2026-03-14.jsonl\n\n# Find by request ID\ngrep 'req_abc123' .evlog\u002Flogs\u002F*.jsonl\n",[624,2500,2501,2506,2520,2524,2529],{"__ignoreMap":704},[708,2502,2503],{"class":710,"line":711},[708,2504,2505],{"class":944},"# Find all errors\n",[708,2507,2508,2511,2513,2516,2518],{"class":710,"line":775},[708,2509,2510],{"class":1317},"grep",[708,2512,732],{"class":718},[708,2514,2515],{"class":735},"\"level\":\"error\"",[708,2517,833],{"class":718},[708,2519,2404],{"class":735},[708,2521,2522],{"class":710,"line":782},[708,2523,779],{"emptyLinePlaceholder":778},[708,2525,2526],{"class":710,"line":813},[708,2527,2528],{"class":944},"# Find by request ID\n",[708,2530,2531,2533,2535,2538,2540,2543,2546],{"class":710,"line":849},[708,2532,2510],{"class":1317},[708,2534,732],{"class":718},[708,2536,2537],{"class":735},"req_abc123",[708,2539,833],{"class":718},[708,2541,2542],{"class":735}," .evlog\u002Flogs\u002F",[708,2544,2545],{"class":722},"*",[708,2547,2548],{"class":735},".jsonl\n",[691,2550,2552],{"id":2551},"call-the-drain-without-a-framework","Call the drain without a framework",[609,2554,2555],{},"For advanced use cases, use the lower-level write functions:",[698,2557,2559],{"className":700,"code":2558,"filename":702,"language":703,"meta":704,"style":704},"import { writeToFs, writeBatchToFs } from 'evlog\u002Ffs'\n\nawait writeToFs(event, {\n  dir: '.evlog\u002Flogs',\n  pretty: false,\n})\n\nawait writeBatchToFs(events, {\n  dir: '.evlog\u002Flogs',\n  pretty: false,\n})\n",[624,2560,2561,2585,2589,2602,2618,2630,2636,2640,2653,2667,2677],{"__ignoreMap":704},[708,2562,2563,2565,2567,2570,2572,2575,2577,2579,2581,2583],{"class":710,"line":711},[708,2564,715],{"class":714},[708,2566,719],{"class":718},[708,2568,2569],{"class":722}," writeToFs",[708,2571,841],{"class":718},[708,2573,2574],{"class":722}," writeBatchToFs",[708,2576,726],{"class":718},[708,2578,729],{"class":714},[708,2580,732],{"class":718},[708,2582,736],{"class":735},[708,2584,739],{"class":718},[708,2586,2587],{"class":710,"line":775},[708,2588,779],{"emptyLinePlaceholder":778},[708,2590,2591,2593,2595,2598,2600],{"class":710,"line":782},[708,2592,1505],{"class":714},[708,2594,2569],{"class":791},[708,2596,2597],{"class":722},"(event",[708,2599,841],{"class":718},[708,2601,810],{"class":718},[708,2603,2604,2607,2609,2611,2614,2616],{"class":710,"line":813},[708,2605,2606],{"class":830},"  dir",[708,2608,1035],{"class":718},[708,2610,732],{"class":718},[708,2612,2613],{"class":735},".evlog\u002Flogs",[708,2615,833],{"class":718},[708,2617,1045],{"class":718},[708,2619,2620,2623,2625,2628],{"class":710,"line":849},[708,2621,2622],{"class":830},"  pretty",[708,2624,1035],{"class":718},[708,2626,2627],{"class":2139}," false",[708,2629,1045],{"class":718},[708,2631,2632,2634],{"class":710,"line":1029},[708,2633,852],{"class":718},[708,2635,855],{"class":722},[708,2637,2638],{"class":710,"line":1048},[708,2639,779],{"emptyLinePlaceholder":778},[708,2641,2642,2644,2646,2649,2651],{"class":710,"line":1063},[708,2643,1505],{"class":714},[708,2645,2574],{"class":791},[708,2647,2648],{"class":722},"(events",[708,2650,841],{"class":718},[708,2652,810],{"class":718},[708,2654,2655,2657,2659,2661,2663,2665],{"class":710,"line":2114},[708,2656,2606],{"class":830},[708,2658,1035],{"class":718},[708,2660,732],{"class":718},[708,2662,2613],{"class":735},[708,2664,833],{"class":718},[708,2666,1045],{"class":718},[708,2668,2669,2671,2673,2675],{"class":710,"line":2119},[708,2670,2622],{"class":830},[708,2672,1035],{"class":718},[708,2674,2627],{"class":2139},[708,2676,1045],{"class":718},[708,2678,2679,2681],{"class":710,"line":2125},[708,2680,852],{"class":718},[708,2682,855],{"class":722},[691,2684,2686],{"id":2685},"hand-the-file-to-an-agent","Hand the file to an agent",[609,2688,2689,2690,2696],{},"The file system drain pairs with the ",[680,2691,2692,2695],{"href":570},[624,2693,2694],{},"analyze-logs"," agent skill",". When installed, your AI assistant can read the NDJSON logs directly to debug errors, trace requests, and investigate performance without any external tools.",[691,2698,2700],{"id":2699},"next-steps","Next Steps",[613,2702,2703,2708,2714,2720],{},[616,2704,2705,2707],{},[680,2706,569],{"href":570}," - Let AI analyze your logs",[616,2709,2710,2713],{},[680,2711,2712],{"href":162},"Axiom Adapter"," - Send logs to Axiom for querying and dashboards",[616,2715,2716,2719],{},[680,2717,2718],{"href":535},"Pipeline"," - Add batching and retry to any drain",[616,2721,2722,2725],{},[680,2723,2724],{"href":530},"Custom Adapters"," - Build your own adapter",[2727,2728,2729],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":704,"searchDepth":775,"depth":775,"links":2731},[2732,2733,2734,2735,2741,2742,2747,2748,2749],{"id":693,"depth":775,"text":20},{"id":742,"depth":775,"text":25},{"id":1874,"depth":775,"text":1875},{"id":1911,"depth":775,"text":547,"children":2736},[2737,2738,2739,2740],{"id":1915,"depth":782,"text":346},{"id":2021,"depth":782,"text":2022},{"id":2183,"depth":782,"text":2184},{"id":2204,"depth":782,"text":2205},{"id":2217,"depth":775,"text":2218},{"id":2380,"depth":775,"text":2381,"children":2743},[2744,2745,2746],{"id":2384,"depth":782,"text":2385},{"id":2407,"depth":782,"text":2408},{"id":2494,"depth":782,"text":2495},{"id":2551,"depth":775,"text":2552},{"id":2685,"depth":775,"text":2686},{"id":2699,"depth":775,"text":2700},"Write wide events to the local file system as NDJSON for local debugging, AI agent integration, and production backup.","md",[2753,2760],{"label":2754,"icon":2755,"to":2756,"target":2757,"color":2758,"variant":2759},"NDJSON Format","i-lucide-external-link","https:\u002F\u002Fgithub.com\u002Fndjson\u002Fndjson-spec","_blank","neutral","subtle",{"label":2712,"icon":164,"to":162,"color":2758,"variant":2759},{},{"title":216,"icon":219},{"title":604,"description":2750},"s_cWqxzNVzPWbZ5-MqtMGyaBAoFXyrvoPdrdeg-nEGQ",[2766,2768],{"title":206,"path":207,"stem":208,"description":2767,"icon":209,"children":-1},"Send wide events to HyperDX over OTLP\u002FHTTP, using its documented endpoint and authorization header. Configured from environment variables.",{"title":221,"path":222,"stem":223,"description":2769,"icon":224,"children":-1},"Self-hosted retention using NuxtHub database storage. Store, query, and clean up your wide events with no external dependency.",1791054016179]