[{"data":1,"prerenderedAt":2844},["ShallowReactive",2],{"navigation_docs":3,"-reference-configuration":464,"-reference-configuration-surround":2839},[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":439,"body":466,"description":2827,"extension":2828,"links":2829,"meta":2835,"navigation":2836,"path":440,"seo":2837,"stem":441,"__hash__":2838},"docs\u002F6.reference\u002F1.configuration.md",{"type":467,"value":468,"toc":2810},"minimark",[469,482,492,499,774,1030,1059,1066,1123,1139,1142,1149,1159,1165,1220,1313,1319,1429,1437,1441,1450,1588,1592,1597,1697,1706,1710,1713,2365,2491,2513,2517,2526,2651,2655,2658,2661,2670,2765,2772,2775,2800,2806],[470,471,472,473,477,478,481],"p",{},"evlog has two configuration surfaces: ",[474,475,476],"strong",{},"global options"," set once at startup, and ",[474,479,480],{},"middleware options"," set per-framework integration. This page documents both.",[483,484,486,487,491],"h2",{"id":485},"global-options-initlogger","Global Options (",[488,489,490],"code",{},"initLogger",")",[470,493,494,495,498],{},"These options apply to all frameworks. Call ",[488,496,497],{},"initLogger()"," once at application startup for standalone frameworks (Hono, Express, Fastify, Elysia, NestJS, SvelteKit, Cloudflare Workers). For Nuxt and Nitro, these are set via module config and passed through automatically.",[500,501,507],"pre",{"className":502,"code":503,"filename":504,"language":505,"meta":506,"style":506},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { initLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({\n  enabled: true,\n  env: { service: 'my-api', environment: 'production' },\n  pretty: false,\n  silent: false,\n  stringify: true,\n  minLevel: 'info',\n  sampling: { rates: { info: 10 }, keep: [{ status: 400 }] },\n  drain: createAxiomDrain(),\n})\n","src\u002Findex.ts","typescript","",[488,508,509,542,563,570,582,599,640,653,665,677,694,750,765],{"__ignoreMap":506},[510,511,514,518,522,526,529,532,535,539],"span",{"class":512,"line":513},"line",1,[510,515,517],{"class":516},"s7zQu","import",[510,519,521],{"class":520},"sMK4o"," {",[510,523,525],{"class":524},"sTEyZ"," initLogger",[510,527,528],{"class":520}," }",[510,530,531],{"class":516}," from",[510,533,534],{"class":520}," '",[510,536,538],{"class":537},"sfazB","evlog",[510,540,541],{"class":520},"'\n",[510,543,545,547,549,552,554,556,558,561],{"class":512,"line":544},2,[510,546,517],{"class":516},[510,548,521],{"class":520},[510,550,551],{"class":524}," createAxiomDrain",[510,553,528],{"class":520},[510,555,531],{"class":516},[510,557,534],{"class":520},[510,559,560],{"class":537},"evlog\u002Faxiom",[510,562,541],{"class":520},[510,564,566],{"class":512,"line":565},3,[510,567,569],{"emptyLinePlaceholder":568},true,"\n",[510,571,573,576,579],{"class":512,"line":572},4,[510,574,490],{"class":575},"s2Zo4",[510,577,578],{"class":524},"(",[510,580,581],{"class":520},"{\n",[510,583,585,589,592,596],{"class":512,"line":584},5,[510,586,588],{"class":587},"swJcz","  enabled",[510,590,591],{"class":520},":",[510,593,595],{"class":594},"sfNiH"," true",[510,597,598],{"class":520},",\n",[510,600,602,605,607,609,612,614,616,619,622,625,628,630,632,635,637],{"class":512,"line":601},6,[510,603,604],{"class":587},"  env",[510,606,591],{"class":520},[510,608,521],{"class":520},[510,610,611],{"class":587}," service",[510,613,591],{"class":520},[510,615,534],{"class":520},[510,617,618],{"class":537},"my-api",[510,620,621],{"class":520},"'",[510,623,624],{"class":520},",",[510,626,627],{"class":587}," environment",[510,629,591],{"class":520},[510,631,534],{"class":520},[510,633,634],{"class":537},"production",[510,636,621],{"class":520},[510,638,639],{"class":520}," },\n",[510,641,643,646,648,651],{"class":512,"line":642},7,[510,644,645],{"class":587},"  pretty",[510,647,591],{"class":520},[510,649,650],{"class":594}," false",[510,652,598],{"class":520},[510,654,656,659,661,663],{"class":512,"line":655},8,[510,657,658],{"class":587},"  silent",[510,660,591],{"class":520},[510,662,650],{"class":594},[510,664,598],{"class":520},[510,666,668,671,673,675],{"class":512,"line":667},9,[510,669,670],{"class":587},"  stringify",[510,672,591],{"class":520},[510,674,595],{"class":594},[510,676,598],{"class":520},[510,678,680,683,685,687,690,692],{"class":512,"line":679},10,[510,681,682],{"class":587},"  minLevel",[510,684,591],{"class":520},[510,686,534],{"class":520},[510,688,689],{"class":537},"info",[510,691,621],{"class":520},[510,693,598],{"class":520},[510,695,697,700,702,704,707,709,711,714,716,720,723,726,728,731,734,737,739,742,744,747],{"class":512,"line":696},11,[510,698,699],{"class":587},"  sampling",[510,701,591],{"class":520},[510,703,521],{"class":520},[510,705,706],{"class":587}," rates",[510,708,591],{"class":520},[510,710,521],{"class":520},[510,712,713],{"class":587}," info",[510,715,591],{"class":520},[510,717,719],{"class":718},"sbssI"," 10",[510,721,722],{"class":520}," },",[510,724,725],{"class":587}," keep",[510,727,591],{"class":520},[510,729,730],{"class":524}," [",[510,732,733],{"class":520},"{",[510,735,736],{"class":587}," status",[510,738,591],{"class":520},[510,740,741],{"class":718}," 400",[510,743,528],{"class":520},[510,745,746],{"class":524},"] ",[510,748,749],{"class":520},"},\n",[510,751,753,756,758,760,763],{"class":512,"line":752},12,[510,754,755],{"class":587},"  drain",[510,757,591],{"class":520},[510,759,551],{"class":575},[510,761,762],{"class":524},"()",[510,764,598],{"class":520},[510,766,768,771],{"class":512,"line":767},13,[510,769,770],{"class":520},"}",[510,772,773],{"class":524},")\n",[775,776,777,796],"table",{},[778,779,780],"thead",{},[781,782,783,787,790,793],"tr",{},[784,785,786],"th",{},"Option",[784,788,789],{},"Type",[784,791,792],{},"Default",[784,794,795],{},"Description",[797,798,799,824,842,864,894,912,936,964,986,1011],"tbody",{},[781,800,801,807,812,817],{},[802,803,804],"td",{},[488,805,806],{},"enabled",[802,808,809],{},[488,810,811],{},"boolean",[802,813,814],{},[488,815,816],{},"true",[802,818,819,820,823],{},"Enable\u002Fdisable all logging globally. When ",[488,821,822],{},"false",", all operations become no-ops",[781,825,826,831,836,839],{},[802,827,828],{},[488,829,830],{},"env",[802,832,833],{},[488,834,835],{},"Partial\u003CEnvironmentContext>",[802,837,838],{},"Auto-detected",[802,840,841],{},"Environment context overrides (see below)",[781,843,844,849,853,858],{},[802,845,846],{},[488,847,848],{},"pretty",[802,850,851],{},[488,852,811],{},[802,854,855,857],{},[488,856,816],{}," in dev",[802,859,860,861],{},"Pretty print with tree formatting. Auto-detected based on ",[488,862,863],{},"NODE_ENV",[781,865,866,871,876,882],{},[802,867,868],{},[488,869,870],{},"dev",[802,872,873],{},[488,874,875],{},"'evlog' | 'nitro' | 'both' | object",[802,877,878,881],{},[488,879,880],{},"'evlog'"," in pretty dev",[802,883,884,885,888,889],{},"Dev terminal presets or ",[488,886,887],{},"{ frameworkOverlay, prettyError }"," — see ",[890,891,893],"a",{"href":892},"#dev-terminal-output","Dev terminal output",[781,895,896,901,905,909],{},[802,897,898],{},[488,899,900],{},"silent",[802,902,903],{},[488,904,811],{},[802,906,907],{},[488,908,822],{},[802,910,911],{},"Suppress console output. Events are still built, sampled, and passed to drains",[781,913,914,919,923,927],{},[802,915,916],{},[488,917,918],{},"stringify",[802,920,921],{},[488,922,811],{},[802,924,925],{},[488,926,816],{},[802,928,929,930,932,933,935],{},"Emit JSON strings when ",[488,931,848],{}," is disabled. Set to ",[488,934,822],{}," for Cloudflare Workers",[781,937,938,943,948,953],{},[802,939,940],{},[488,941,942],{},"minLevel",[802,944,945],{},[488,946,947],{},"'debug' | 'info' | 'warn' | 'error'",[802,949,950],{},[488,951,952],{},"'debug'",[802,954,955,956,959,960,963],{},"Minimum severity for the global ",[488,957,958],{},"log"," API only (not ",[488,961,962],{},"createLogger"," \u002F request wide events). Order: debug \u003C info \u003C warn \u003C error",[781,965,966,971,976,981],{},[802,967,968],{},[488,969,970],{},"sampling",[802,972,973],{},[488,974,975],{},"SamplingConfig",[802,977,978],{},[488,979,980],{},"undefined",[802,982,983,984],{},"Head and tail sampling configuration. See ",[890,985,61],{"href":62},[781,987,988,993,998,1003],{},[802,989,990],{},[488,991,992],{},"redact",[802,994,995],{},[488,996,997],{},"boolean | RedactConfig",[802,999,1000,1002],{},[488,1001,816],{}," in production",[802,1004,1005,1006,1008,1009],{},"Enabled by default in production. ",[488,1007,822],{}," to disable. Object for fine-grained control. See ",[890,1010,66],{"href":67},[781,1012,1013,1018,1023,1027],{},[802,1014,1015],{},[488,1016,1017],{},"drain",[802,1019,1020],{},[488,1021,1022],{},"(ctx: DrainContext) => void",[802,1024,1025],{},[488,1026,980],{},[802,1028,1029],{},"Drain callback for sending events to external services",[470,1031,1032,1035,1036,1038,1039,1042,1043,1046,1047,1050,1051,1054,1055,1058],{},[488,1033,1034],{},"RedactConfig"," fields (when ",[488,1037,992],{}," is an object): ",[488,1040,1041],{},"paths"," (dot-notation with globs), ",[488,1044,1045],{},"patterns"," (regex on string values), ",[488,1048,1049],{},"builtins",", ",[488,1052,1053],{},"replacement",". Full table in ",[890,1056,66],{"href":1057},"\u002Flearn\u002Fredaction#configuration-reference",".",[1060,1061,1063,1065],"h3",{"id":1062},"minlevel-vs-sampling",[488,1064,942],{}," vs sampling",[1067,1068,1069,1107],"ul",{},[1070,1071,1072,1076,1077,1080,1081,1084,1085,1088,1089,1092,1093,1096,1097,1102,1103,1106],"li",{},[474,1073,1074],{},[488,1075,942],{}," is a ",[474,1078,1079],{},"hard threshold"," on the simple ",[488,1082,1083],{},"log.*"," API: levels below the threshold are never emitted. It does ",[474,1086,1087],{},"not"," apply to wide events from ",[488,1090,1091],{},"useLogger"," \u002F ",[488,1094,1095],{},"createLogger().emit()"," — use ",[474,1098,1099],{},[488,1100,1101],{},"sampling.rates"," (and tail ",[488,1104,1105],{},"keep",") for request volume.",[1070,1108,1109,1112,1113,1115,1116,1119,1120,1122],{},[474,1110,1111],{},"Head sampling"," (",[488,1114,1101],{},") is ",[474,1117,1118],{},"probabilistic"," on what is already allowed by ",[488,1121,942],{}," for simple logs.",[470,1124,1125,1126,1092,1129,1132,1133,1135,1136,1138],{},"Evaluation order for ",[488,1127,1128],{},"log.info",[488,1130,1131],{},"log.debug"," \u002F etc.: ",[488,1134,806],{}," → ",[488,1137,942],{}," → head sampling → output.",[1060,1140,893],{"id":1141},"dev-terminal-output",[470,1143,1144,1145,1148],{},"Pretty error blocks run only when ",[488,1146,1147],{},"pretty: true"," (default in development). Production always emits JSON wide events — no stack snippets or disk reads.",[470,1150,1151,1152,1154,1155,1158],{},"Use ",[488,1153,870],{}," to control ",[474,1156,1157],{},"two independent axes",": whether Nitro's Youch overlay runs, and how much stack detail evlog prints inside the wide event.",[470,1160,1161,1164],{},[474,1162,1163],{},"Presets"," (recommended):",[775,1166,1167,1180],{},[778,1168,1169],{},[781,1170,1171,1174,1177],{},[784,1172,1173],{},"Preset",[784,1175,1176],{},"Nitro overlay",[784,1178,1179],{},"evlog error block",[797,1181,1182,1195,1208],{},[781,1183,1184,1189,1192],{},[802,1185,1186,1188],{},[488,1187,880],{}," (default in pretty dev)",[802,1190,1191],{},"Off",[802,1193,1194],{},"Full — location, snippet, stack tail, Why\u002FFix",[781,1196,1197,1202,1205],{},[802,1198,1199],{},[488,1200,1201],{},"'nitro'",[802,1203,1204],{},"On",[802,1206,1207],{},"Guidance only — message + Why\u002FFix\u002Flink (stack from Nitro)",[781,1209,1210,1215,1217],{},[802,1211,1212],{},[488,1213,1214],{},"'both'",[802,1216,1204],{},[802,1218,1219],{},"Full — evlog block + Nitro overlay (debug)",[500,1221,1224],{"className":502,"code":1222,"filename":1223,"language":505,"meta":506,"style":506},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    pretty: true,\n    dev: 'evlog', \u002F\u002F or 'nitro' | 'both'\n  },\n})\n","nuxt.config.ts",[488,1225,1226,1241,1262,1272,1283,1302,1307],{"__ignoreMap":506},[510,1227,1228,1231,1234,1237,1239],{"class":512,"line":513},[510,1229,1230],{"class":516},"export",[510,1232,1233],{"class":516}," default",[510,1235,1236],{"class":575}," defineNuxtConfig",[510,1238,578],{"class":524},[510,1240,581],{"class":520},[510,1242,1243,1246,1248,1250,1252,1255,1257,1260],{"class":512,"line":544},[510,1244,1245],{"class":587},"  modules",[510,1247,591],{"class":520},[510,1249,730],{"class":524},[510,1251,621],{"class":520},[510,1253,1254],{"class":537},"evlog\u002Fnuxt",[510,1256,621],{"class":520},[510,1258,1259],{"class":524},"]",[510,1261,598],{"class":520},[510,1263,1264,1267,1269],{"class":512,"line":565},[510,1265,1266],{"class":587},"  evlog",[510,1268,591],{"class":520},[510,1270,1271],{"class":520}," {\n",[510,1273,1274,1277,1279,1281],{"class":512,"line":572},[510,1275,1276],{"class":587},"    pretty",[510,1278,591],{"class":520},[510,1280,595],{"class":594},[510,1282,598],{"class":520},[510,1284,1285,1288,1290,1292,1294,1296,1298],{"class":512,"line":584},[510,1286,1287],{"class":587},"    dev",[510,1289,591],{"class":520},[510,1291,534],{"class":520},[510,1293,538],{"class":537},[510,1295,621],{"class":520},[510,1297,624],{"class":520},[510,1299,1301],{"class":1300},"sHwdD"," \u002F\u002F or 'nitro' | 'both'\n",[510,1303,1304],{"class":512,"line":601},[510,1305,1306],{"class":520},"  },\n",[510,1308,1309,1311],{"class":512,"line":642},[510,1310,770],{"class":520},[510,1312,773],{"class":524},[470,1314,1315,1318],{},[474,1316,1317],{},"Explicit object"," (fine-grained):",[500,1320,1322],{"className":502,"code":1321,"filename":1223,"language":505,"meta":506,"style":506},"evlog: {\n  dev: {\n    frameworkOverlay: true,\n    prettyError: {\n      snippet: false,\n      stackDepth: 0,\n      compact: true,\n      detail: 'guidance', \u002F\u002F 'full' | 'guidance'\n    },\n  },\n}\n",[488,1323,1324,1333,1342,1353,1362,1373,1385,1396,1415,1420,1424],{"__ignoreMap":506},[510,1325,1326,1329,1331],{"class":512,"line":513},[510,1327,538],{"class":1328},"sBMFI",[510,1330,591],{"class":520},[510,1332,1271],{"class":520},[510,1334,1335,1338,1340],{"class":512,"line":544},[510,1336,1337],{"class":1328},"  dev",[510,1339,591],{"class":520},[510,1341,1271],{"class":520},[510,1343,1344,1347,1349,1351],{"class":512,"line":565},[510,1345,1346],{"class":1328},"    frameworkOverlay",[510,1348,591],{"class":520},[510,1350,595],{"class":594},[510,1352,598],{"class":520},[510,1354,1355,1358,1360],{"class":512,"line":572},[510,1356,1357],{"class":1328},"    prettyError",[510,1359,591],{"class":520},[510,1361,1271],{"class":520},[510,1363,1364,1367,1369,1371],{"class":512,"line":584},[510,1365,1366],{"class":1328},"      snippet",[510,1368,591],{"class":520},[510,1370,650],{"class":594},[510,1372,598],{"class":520},[510,1374,1375,1378,1380,1383],{"class":512,"line":601},[510,1376,1377],{"class":1328},"      stackDepth",[510,1379,591],{"class":520},[510,1381,1382],{"class":718}," 0",[510,1384,598],{"class":520},[510,1386,1387,1390,1392,1394],{"class":512,"line":642},[510,1388,1389],{"class":1328},"      compact",[510,1391,591],{"class":520},[510,1393,595],{"class":594},[510,1395,598],{"class":520},[510,1397,1398,1401,1403,1405,1408,1410,1412],{"class":512,"line":655},[510,1399,1400],{"class":1328},"      detail",[510,1402,591],{"class":520},[510,1404,534],{"class":520},[510,1406,1407],{"class":537},"guidance",[510,1409,621],{"class":520},[510,1411,624],{"class":520},[510,1413,1414],{"class":1300}," \u002F\u002F 'full' | 'guidance'\n",[510,1416,1417],{"class":512,"line":667},[510,1418,1419],{"class":520},"    },\n",[510,1421,1422],{"class":512,"line":679},[510,1423,1306],{"class":520},[510,1425,1426],{"class":512,"line":696},[510,1427,1428],{"class":520},"}\n",[470,1430,1431,1432,1436],{},"See ",[890,1433,1435],{"href":1434},"\u002Flearn\u002Fstructured-errors#development-terminal-output","Structured Errors — Development terminal output"," for an example of the pretty error tree.",[1060,1438,1440],{"id":1439},"environment-context","Environment Context",[470,1442,1443,1444,1446,1447,1058],{},"The ",[488,1445,830],{}," option controls the fields included in every log event. Most values are auto-detected from environment variables and ",[488,1448,1449],{},"package.json",[775,1451,1452,1466],{},[778,1453,1454],{},[781,1455,1456,1459,1461,1463],{},[784,1457,1458],{},"Field",[784,1460,789],{},[784,1462,792],{},[784,1464,1465],{},"Auto-detected from",[797,1467,1468,1493,1513,1536,1562],{},[781,1469,1470,1475,1480,1485],{},[802,1471,1472],{},[488,1473,1474],{},"service",[802,1476,1477],{},[488,1478,1479],{},"string",[802,1481,1482],{},[488,1483,1484],{},"'app'",[802,1486,1487,1050,1490,1492],{},[488,1488,1489],{},"SERVICE_NAME",[488,1491,1449],{}," name",[781,1494,1495,1500,1504,1509],{},[802,1496,1497],{},[488,1498,1499],{},"environment",[802,1501,1502],{},[488,1503,1479],{},[802,1505,1506],{},[488,1507,1508],{},"'development'",[802,1510,1511],{},[488,1512,863],{},[781,1514,1515,1520,1524,1528],{},[802,1516,1517],{},[488,1518,1519],{},"version",[802,1521,1522],{},[488,1523,1479],{},[802,1525,1526],{},[488,1527,980],{},[802,1529,1530,1050,1533,1535],{},[488,1531,1532],{},"APP_VERSION",[488,1534,1449],{}," version",[781,1537,1538,1543,1547,1551],{},[802,1539,1540],{},[488,1541,1542],{},"commitHash",[802,1544,1545],{},[488,1546,1479],{},[802,1548,1549],{},[488,1550,980],{},[802,1552,1553,1050,1556,1050,1559],{},[488,1554,1555],{},"COMMIT_SHA",[488,1557,1558],{},"GIT_COMMIT",[488,1560,1561],{},"VERCEL_GIT_COMMIT_SHA",[781,1563,1564,1569,1573,1577],{},[802,1565,1566],{},[488,1567,1568],{},"region",[802,1570,1571],{},[488,1572,1479],{},[802,1574,1575],{},[488,1576,980],{},[802,1578,1579,1050,1582,1050,1585],{},[488,1580,1581],{},"FLY_REGION",[488,1583,1584],{},"AWS_REGION",[488,1586,1587],{},"VERCEL_REGION",[1060,1589,1591],{"id":1590},"silent-mode","Silent Mode",[470,1593,1151,1594,1596],{},[488,1595,900],{}," when your deployment platform captures stdout as its primary log ingestion (GCP Cloud Run, AWS Lambda, Fly.io, Railway, etc.) and you want a drain adapter to control the output format.",[500,1598,1600],{"className":502,"code":1599,"filename":504,"language":505,"meta":506,"style":506},"import { initLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({\n  silent: process.env.NODE_ENV === 'production',\n  drain: createAxiomDrain(),\n})\n",[488,1601,1602,1620,1638,1642,1650,1679,1691],{"__ignoreMap":506},[510,1603,1604,1606,1608,1610,1612,1614,1616,1618],{"class":512,"line":513},[510,1605,517],{"class":516},[510,1607,521],{"class":520},[510,1609,525],{"class":524},[510,1611,528],{"class":520},[510,1613,531],{"class":516},[510,1615,534],{"class":520},[510,1617,538],{"class":537},[510,1619,541],{"class":520},[510,1621,1622,1624,1626,1628,1630,1632,1634,1636],{"class":512,"line":544},[510,1623,517],{"class":516},[510,1625,521],{"class":520},[510,1627,551],{"class":524},[510,1629,528],{"class":520},[510,1631,531],{"class":516},[510,1633,534],{"class":520},[510,1635,560],{"class":537},[510,1637,541],{"class":520},[510,1639,1640],{"class":512,"line":565},[510,1641,569],{"emptyLinePlaceholder":568},[510,1643,1644,1646,1648],{"class":512,"line":572},[510,1645,490],{"class":575},[510,1647,578],{"class":524},[510,1649,581],{"class":520},[510,1651,1652,1654,1656,1659,1661,1663,1665,1668,1671,1673,1675,1677],{"class":512,"line":584},[510,1653,658],{"class":587},[510,1655,591],{"class":520},[510,1657,1658],{"class":524}," process",[510,1660,1058],{"class":520},[510,1662,830],{"class":524},[510,1664,1058],{"class":520},[510,1666,1667],{"class":524},"NODE_ENV ",[510,1669,1670],{"class":520},"===",[510,1672,534],{"class":520},[510,1674,634],{"class":537},[510,1676,621],{"class":520},[510,1678,598],{"class":520},[510,1680,1681,1683,1685,1687,1689],{"class":512,"line":601},[510,1682,755],{"class":587},[510,1684,591],{"class":520},[510,1686,551],{"class":575},[510,1688,762],{"class":524},[510,1690,598],{"class":520},[510,1692,1693,1695],{"class":512,"line":642},[510,1694,770],{"class":520},[510,1696,773],{"class":524},[1698,1699,1702,1703,1705],"callout",{"color":1700,"icon":1701},"warning","i-lucide-alert-triangle","If ",[488,1704,900],{}," is enabled without a drain, events are built and sampled but never output anywhere. evlog will warn you about this at startup.",[483,1707,1709],{"id":1708},"middleware-options","Middleware Options",[470,1711,1712],{},"These options are passed to the framework middleware\u002Fplugin. They control per-request behavior: which routes to log, how to drain and enrich events, and custom tail sampling logic.",[1714,1715,1716,2013,2207,2304],"code-group",{},[500,1717,1719],{"className":502,"code":1718,"filename":172,"language":505,"meta":506,"style":506},"\u002F\u002F lib\u002Fevlog.ts\nimport { createEvlog } from 'evlog\u002Fnext'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport const { withEvlog, useLogger, log, createError } = createEvlog({\n  service: 'my-app',\n  include: ['\u002Fapi\u002F**'],\n  exclude: ['\u002Fapi\u002Fhealth'],\n  routes: { '\u002Fapi\u002Fauth\u002F**': { service: 'auth' } },\n  drain: createAxiomDrain(),\n  enrich: (ctx) => { ctx.event.region = process.env.FLY_REGION },\n  keep: (ctx) => { if (ctx.duration > 2000) ctx.shouldKeep = true },\n})\n",[488,1720,1721,1726,1746,1764,1768,1807,1823,1843,1863,1898,1910,1956,2007],{"__ignoreMap":506},[510,1722,1723],{"class":512,"line":513},[510,1724,1725],{"class":1300},"\u002F\u002F lib\u002Fevlog.ts\n",[510,1727,1728,1730,1732,1735,1737,1739,1741,1744],{"class":512,"line":544},[510,1729,517],{"class":516},[510,1731,521],{"class":520},[510,1733,1734],{"class":524}," createEvlog",[510,1736,528],{"class":520},[510,1738,531],{"class":516},[510,1740,534],{"class":520},[510,1742,1743],{"class":537},"evlog\u002Fnext",[510,1745,541],{"class":520},[510,1747,1748,1750,1752,1754,1756,1758,1760,1762],{"class":512,"line":565},[510,1749,517],{"class":516},[510,1751,521],{"class":520},[510,1753,551],{"class":524},[510,1755,528],{"class":520},[510,1757,531],{"class":516},[510,1759,534],{"class":520},[510,1761,560],{"class":537},[510,1763,541],{"class":520},[510,1765,1766],{"class":512,"line":572},[510,1767,569],{"emptyLinePlaceholder":568},[510,1769,1770,1772,1776,1778,1781,1783,1786,1788,1791,1793,1796,1798,1801,1803,1805],{"class":512,"line":584},[510,1771,1230],{"class":516},[510,1773,1775],{"class":1774},"spNyl"," const",[510,1777,521],{"class":520},[510,1779,1780],{"class":524}," withEvlog",[510,1782,624],{"class":520},[510,1784,1785],{"class":524}," useLogger",[510,1787,624],{"class":520},[510,1789,1790],{"class":524}," log",[510,1792,624],{"class":520},[510,1794,1795],{"class":524}," createError ",[510,1797,770],{"class":520},[510,1799,1800],{"class":520}," =",[510,1802,1734],{"class":575},[510,1804,578],{"class":524},[510,1806,581],{"class":520},[510,1808,1809,1812,1814,1816,1819,1821],{"class":512,"line":601},[510,1810,1811],{"class":587},"  service",[510,1813,591],{"class":520},[510,1815,534],{"class":520},[510,1817,1818],{"class":537},"my-app",[510,1820,621],{"class":520},[510,1822,598],{"class":520},[510,1824,1825,1828,1830,1832,1834,1837,1839,1841],{"class":512,"line":642},[510,1826,1827],{"class":587},"  include",[510,1829,591],{"class":520},[510,1831,730],{"class":524},[510,1833,621],{"class":520},[510,1835,1836],{"class":537},"\u002Fapi\u002F**",[510,1838,621],{"class":520},[510,1840,1259],{"class":524},[510,1842,598],{"class":520},[510,1844,1845,1848,1850,1852,1854,1857,1859,1861],{"class":512,"line":655},[510,1846,1847],{"class":587},"  exclude",[510,1849,591],{"class":520},[510,1851,730],{"class":524},[510,1853,621],{"class":520},[510,1855,1856],{"class":537},"\u002Fapi\u002Fhealth",[510,1858,621],{"class":520},[510,1860,1259],{"class":524},[510,1862,598],{"class":520},[510,1864,1865,1868,1870,1872,1874,1877,1879,1881,1883,1885,1887,1889,1892,1894,1896],{"class":512,"line":667},[510,1866,1867],{"class":587},"  routes",[510,1869,591],{"class":520},[510,1871,521],{"class":520},[510,1873,534],{"class":520},[510,1875,1876],{"class":587},"\u002Fapi\u002Fauth\u002F**",[510,1878,621],{"class":520},[510,1880,591],{"class":520},[510,1882,521],{"class":520},[510,1884,611],{"class":587},[510,1886,591],{"class":520},[510,1888,534],{"class":520},[510,1890,1891],{"class":537},"auth",[510,1893,621],{"class":520},[510,1895,528],{"class":520},[510,1897,639],{"class":520},[510,1899,1900,1902,1904,1906,1908],{"class":512,"line":679},[510,1901,755],{"class":587},[510,1903,591],{"class":520},[510,1905,551],{"class":575},[510,1907,762],{"class":524},[510,1909,598],{"class":520},[510,1911,1912,1915,1917,1919,1923,1925,1928,1930,1933,1935,1938,1940,1942,1944,1946,1948,1950,1952,1954],{"class":512,"line":696},[510,1913,1914],{"class":575},"  enrich",[510,1916,591],{"class":520},[510,1918,1112],{"class":520},[510,1920,1922],{"class":1921},"sHdIc","ctx",[510,1924,491],{"class":520},[510,1926,1927],{"class":1774}," =>",[510,1929,521],{"class":520},[510,1931,1932],{"class":524}," ctx",[510,1934,1058],{"class":520},[510,1936,1937],{"class":524},"event",[510,1939,1058],{"class":520},[510,1941,1568],{"class":524},[510,1943,1800],{"class":520},[510,1945,1658],{"class":524},[510,1947,1058],{"class":520},[510,1949,830],{"class":524},[510,1951,1058],{"class":520},[510,1953,1581],{"class":524},[510,1955,639],{"class":520},[510,1957,1958,1961,1963,1965,1967,1969,1971,1973,1976,1978,1980,1982,1985,1988,1991,1994,1996,1998,2001,2003,2005],{"class":512,"line":752},[510,1959,1960],{"class":575},"  keep",[510,1962,591],{"class":520},[510,1964,1112],{"class":520},[510,1966,1922],{"class":1921},[510,1968,491],{"class":520},[510,1970,1927],{"class":1774},[510,1972,521],{"class":520},[510,1974,1975],{"class":516}," if",[510,1977,1112],{"class":587},[510,1979,1922],{"class":524},[510,1981,1058],{"class":520},[510,1983,1984],{"class":524},"duration",[510,1986,1987],{"class":520}," >",[510,1989,1990],{"class":718}," 2000",[510,1992,1993],{"class":587},") ",[510,1995,1922],{"class":524},[510,1997,1058],{"class":520},[510,1999,2000],{"class":524},"shouldKeep",[510,2002,1800],{"class":520},[510,2004,595],{"class":594},[510,2006,639],{"class":520},[510,2008,2009,2011],{"class":512,"line":767},[510,2010,770],{"class":520},[510,2012,773],{"class":524},[500,2014,2016],{"className":502,"code":2015,"filename":202,"language":505,"meta":506,"style":506},"app.use(evlog({\n  include: ['\u002Fapi\u002F**'],\n  exclude: ['\u002Fapi\u002Fhealth'],\n  routes: { '\u002Fapi\u002Fauth\u002F**': { service: 'auth' } },\n  drain: createAxiomDrain(),\n  enrich: (ctx) => { ctx.event.region = process.env.FLY_REGION },\n  keep: (ctx) => { if (ctx.duration > 2000) ctx.shouldKeep = true },\n}))\n",[488,2017,2018,2036,2054,2072,2104,2116,2156,2200],{"__ignoreMap":506},[510,2019,2020,2023,2025,2028,2030,2032,2034],{"class":512,"line":513},[510,2021,2022],{"class":524},"app",[510,2024,1058],{"class":520},[510,2026,2027],{"class":575},"use",[510,2029,578],{"class":524},[510,2031,538],{"class":575},[510,2033,578],{"class":524},[510,2035,581],{"class":520},[510,2037,2038,2040,2042,2044,2046,2048,2050,2052],{"class":512,"line":544},[510,2039,1827],{"class":587},[510,2041,591],{"class":520},[510,2043,730],{"class":524},[510,2045,621],{"class":520},[510,2047,1836],{"class":537},[510,2049,621],{"class":520},[510,2051,1259],{"class":524},[510,2053,598],{"class":520},[510,2055,2056,2058,2060,2062,2064,2066,2068,2070],{"class":512,"line":565},[510,2057,1847],{"class":587},[510,2059,591],{"class":520},[510,2061,730],{"class":524},[510,2063,621],{"class":520},[510,2065,1856],{"class":537},[510,2067,621],{"class":520},[510,2069,1259],{"class":524},[510,2071,598],{"class":520},[510,2073,2074,2076,2078,2080,2082,2084,2086,2088,2090,2092,2094,2096,2098,2100,2102],{"class":512,"line":572},[510,2075,1867],{"class":587},[510,2077,591],{"class":520},[510,2079,521],{"class":520},[510,2081,534],{"class":520},[510,2083,1876],{"class":587},[510,2085,621],{"class":520},[510,2087,591],{"class":520},[510,2089,521],{"class":520},[510,2091,611],{"class":587},[510,2093,591],{"class":520},[510,2095,534],{"class":520},[510,2097,1891],{"class":537},[510,2099,621],{"class":520},[510,2101,528],{"class":520},[510,2103,639],{"class":520},[510,2105,2106,2108,2110,2112,2114],{"class":512,"line":584},[510,2107,755],{"class":587},[510,2109,591],{"class":520},[510,2111,551],{"class":575},[510,2113,762],{"class":524},[510,2115,598],{"class":520},[510,2117,2118,2120,2122,2124,2126,2128,2130,2132,2134,2136,2138,2140,2142,2144,2146,2148,2150,2152,2154],{"class":512,"line":601},[510,2119,1914],{"class":575},[510,2121,591],{"class":520},[510,2123,1112],{"class":520},[510,2125,1922],{"class":1921},[510,2127,491],{"class":520},[510,2129,1927],{"class":1774},[510,2131,521],{"class":520},[510,2133,1932],{"class":524},[510,2135,1058],{"class":520},[510,2137,1937],{"class":524},[510,2139,1058],{"class":520},[510,2141,1568],{"class":524},[510,2143,1800],{"class":520},[510,2145,1658],{"class":524},[510,2147,1058],{"class":520},[510,2149,830],{"class":524},[510,2151,1058],{"class":520},[510,2153,1581],{"class":524},[510,2155,639],{"class":520},[510,2157,2158,2160,2162,2164,2166,2168,2170,2172,2174,2176,2178,2180,2182,2184,2186,2188,2190,2192,2194,2196,2198],{"class":512,"line":642},[510,2159,1960],{"class":575},[510,2161,591],{"class":520},[510,2163,1112],{"class":520},[510,2165,1922],{"class":1921},[510,2167,491],{"class":520},[510,2169,1927],{"class":1774},[510,2171,521],{"class":520},[510,2173,1975],{"class":516},[510,2175,1112],{"class":587},[510,2177,1922],{"class":524},[510,2179,1058],{"class":520},[510,2181,1984],{"class":524},[510,2183,1987],{"class":520},[510,2185,1990],{"class":718},[510,2187,1993],{"class":587},[510,2189,1922],{"class":524},[510,2191,1058],{"class":520},[510,2193,2000],{"class":524},[510,2195,1800],{"class":520},[510,2197,595],{"class":594},[510,2199,639],{"class":520},[510,2201,2202,2204],{"class":512,"line":655},[510,2203,770],{"class":520},[510,2205,2206],{"class":524},"))\n",[500,2208,2210],{"className":502,"code":2209,"filename":197,"language":505,"meta":506,"style":506},"app.use(evlog({\n  include: ['\u002Fapi\u002F**'],\n  drain: createAxiomDrain(),\n  enrich: (ctx) => { ctx.event.region = process.env.FLY_REGION },\n}))\n",[488,2211,2212,2228,2246,2258,2298],{"__ignoreMap":506},[510,2213,2214,2216,2218,2220,2222,2224,2226],{"class":512,"line":513},[510,2215,2022],{"class":524},[510,2217,1058],{"class":520},[510,2219,2027],{"class":575},[510,2221,578],{"class":524},[510,2223,538],{"class":575},[510,2225,578],{"class":524},[510,2227,581],{"class":520},[510,2229,2230,2232,2234,2236,2238,2240,2242,2244],{"class":512,"line":544},[510,2231,1827],{"class":587},[510,2233,591],{"class":520},[510,2235,730],{"class":524},[510,2237,621],{"class":520},[510,2239,1836],{"class":537},[510,2241,621],{"class":520},[510,2243,1259],{"class":524},[510,2245,598],{"class":520},[510,2247,2248,2250,2252,2254,2256],{"class":512,"line":565},[510,2249,755],{"class":587},[510,2251,591],{"class":520},[510,2253,551],{"class":575},[510,2255,762],{"class":524},[510,2257,598],{"class":520},[510,2259,2260,2262,2264,2266,2268,2270,2272,2274,2276,2278,2280,2282,2284,2286,2288,2290,2292,2294,2296],{"class":512,"line":572},[510,2261,1914],{"class":575},[510,2263,591],{"class":520},[510,2265,1112],{"class":520},[510,2267,1922],{"class":1921},[510,2269,491],{"class":520},[510,2271,1927],{"class":1774},[510,2273,521],{"class":520},[510,2275,1932],{"class":524},[510,2277,1058],{"class":520},[510,2279,1937],{"class":524},[510,2281,1058],{"class":520},[510,2283,1568],{"class":524},[510,2285,1800],{"class":520},[510,2287,1658],{"class":524},[510,2289,1058],{"class":520},[510,2291,830],{"class":524},[510,2293,1058],{"class":520},[510,2295,1581],{"class":524},[510,2297,639],{"class":520},[510,2299,2300,2302],{"class":512,"line":584},[510,2301,770],{"class":520},[510,2303,2206],{"class":524},[500,2305,2307],{"className":502,"code":2306,"filename":207,"language":505,"meta":506,"style":506},"await app.register(evlog, {\n  include: ['\u002Fapi\u002F**'],\n  drain: createAxiomDrain(),\n})\n",[488,2308,2309,2329,2347,2359],{"__ignoreMap":506},[510,2310,2311,2314,2317,2319,2322,2325,2327],{"class":512,"line":513},[510,2312,2313],{"class":516},"await",[510,2315,2316],{"class":524}," app",[510,2318,1058],{"class":520},[510,2320,2321],{"class":575},"register",[510,2323,2324],{"class":524},"(evlog",[510,2326,624],{"class":520},[510,2328,1271],{"class":520},[510,2330,2331,2333,2335,2337,2339,2341,2343,2345],{"class":512,"line":544},[510,2332,1827],{"class":587},[510,2334,591],{"class":520},[510,2336,730],{"class":524},[510,2338,621],{"class":520},[510,2340,1836],{"class":537},[510,2342,621],{"class":520},[510,2344,1259],{"class":524},[510,2346,598],{"class":520},[510,2348,2349,2351,2353,2355,2357],{"class":512,"line":565},[510,2350,755],{"class":587},[510,2352,591],{"class":520},[510,2354,551],{"class":575},[510,2356,762],{"class":524},[510,2358,598],{"class":520},[510,2360,2361,2363],{"class":512,"line":572},[510,2362,770],{"class":520},[510,2364,773],{"class":524},[775,2366,2367,2379],{},[778,2368,2369],{},[781,2370,2371,2373,2375,2377],{},[784,2372,786],{},[784,2374,789],{},[784,2376,792],{},[784,2378,795],{},[797,2380,2381,2400,2418,2437,2454,2473],{},[781,2382,2383,2388,2393,2397],{},[802,2384,2385],{},[488,2386,2387],{},"include",[802,2389,2390],{},[488,2391,2392],{},"string[]",[802,2394,2395],{},[488,2396,980],{},[802,2398,2399],{},"Route glob patterns to log. If not set, all routes are logged",[781,2401,2402,2407,2411,2415],{},[802,2403,2404],{},[488,2405,2406],{},"exclude",[802,2408,2409],{},[488,2410,2392],{},[802,2412,2413],{},[488,2414,980],{},[802,2416,2417],{},"Route patterns to exclude. Exclusions take precedence over inclusions",[781,2419,2420,2425,2430,2434],{},[802,2421,2422],{},[488,2423,2424],{},"routes",[802,2426,2427],{},[488,2428,2429],{},"Record\u003Cstring, { service: string }>",[802,2431,2432],{},[488,2433,980],{},[802,2435,2436],{},"Route-specific service name overrides",[781,2438,2439,2443,2447,2451],{},[802,2440,2441],{},[488,2442,1017],{},[802,2444,2445],{},[488,2446,1022],{},[802,2448,2449],{},[488,2450,980],{},[802,2452,2453],{},"Drain callback called with every emitted event",[781,2455,2456,2461,2466,2470],{},[802,2457,2458],{},[488,2459,2460],{},"enrich",[802,2462,2463],{},[488,2464,2465],{},"(ctx: EnrichContext) => void",[802,2467,2468],{},[488,2469,980],{},[802,2471,2472],{},"Enrich callback called after emit, before drain",[781,2474,2475,2479,2484,2488],{},[802,2476,2477],{},[488,2478,1105],{},[802,2480,2481],{},[488,2482,2483],{},"(ctx: TailSamplingContext) => void",[802,2485,2486],{},[488,2487,980],{},[802,2489,2490],{},"Custom tail sampling callback",[1698,2492,2493,2496,2497,1050,2500,1050,2503,2506,2507,2509,2510,2512],{"color":689,"icon":13},[474,2494,2495],{},"Nuxt and Nitro"," use module config and Nitro hooks (",[488,2498,2499],{},"evlog:drain",[488,2501,2502],{},"evlog:enrich",[488,2504,2505],{},"evlog:emit:keep",") instead of middleware options. See the ",[890,2508,167],{"href":168}," and ",[890,2511,182],{"href":183}," pages.",[1060,2514,2516],{"id":2515},"middleware-drain-vs-global-drain","Middleware drain vs global drain",[470,2518,2519,2520,2522,2523,2525],{},"When a middleware ",[488,2521,1017],{}," is set, it takes precedence over the global drain from ",[488,2524,497],{},". If no middleware drain is set, the global drain is used as fallback, with the benefit of receiving the full enriched event with request context (method, path, headers).",[500,2527,2529],{"className":502,"code":2528,"filename":504,"language":505,"meta":506,"style":506},"import { initLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({\n  env: { service: 'my-api' },\n  drain: createAxiomDrain(), \u002F\u002F fallback: used by singleton log API AND middleware (if no middleware drain)\n})\n\napp.use(evlog({\n  \u002F\u002F no drain here - falls back to globalDrain from initLogger, with full request context\n}))\n",[488,2530,2531,2549,2567,2571,2579,2599,2614,2620,2624,2640,2645],{"__ignoreMap":506},[510,2532,2533,2535,2537,2539,2541,2543,2545,2547],{"class":512,"line":513},[510,2534,517],{"class":516},[510,2536,521],{"class":520},[510,2538,525],{"class":524},[510,2540,528],{"class":520},[510,2542,531],{"class":516},[510,2544,534],{"class":520},[510,2546,538],{"class":537},[510,2548,541],{"class":520},[510,2550,2551,2553,2555,2557,2559,2561,2563,2565],{"class":512,"line":544},[510,2552,517],{"class":516},[510,2554,521],{"class":520},[510,2556,551],{"class":524},[510,2558,528],{"class":520},[510,2560,531],{"class":516},[510,2562,534],{"class":520},[510,2564,560],{"class":537},[510,2566,541],{"class":520},[510,2568,2569],{"class":512,"line":565},[510,2570,569],{"emptyLinePlaceholder":568},[510,2572,2573,2575,2577],{"class":512,"line":572},[510,2574,490],{"class":575},[510,2576,578],{"class":524},[510,2578,581],{"class":520},[510,2580,2581,2583,2585,2587,2589,2591,2593,2595,2597],{"class":512,"line":584},[510,2582,604],{"class":587},[510,2584,591],{"class":520},[510,2586,521],{"class":520},[510,2588,611],{"class":587},[510,2590,591],{"class":520},[510,2592,534],{"class":520},[510,2594,618],{"class":537},[510,2596,621],{"class":520},[510,2598,639],{"class":520},[510,2600,2601,2603,2605,2607,2609,2611],{"class":512,"line":601},[510,2602,755],{"class":587},[510,2604,591],{"class":520},[510,2606,551],{"class":575},[510,2608,762],{"class":524},[510,2610,624],{"class":520},[510,2612,2613],{"class":1300}," \u002F\u002F fallback: used by singleton log API AND middleware (if no middleware drain)\n",[510,2615,2616,2618],{"class":512,"line":642},[510,2617,770],{"class":520},[510,2619,773],{"class":524},[510,2621,2622],{"class":512,"line":655},[510,2623,569],{"emptyLinePlaceholder":568},[510,2625,2626,2628,2630,2632,2634,2636,2638],{"class":512,"line":667},[510,2627,2022],{"class":524},[510,2629,1058],{"class":520},[510,2631,2027],{"class":575},[510,2633,578],{"class":524},[510,2635,538],{"class":575},[510,2637,578],{"class":524},[510,2639,581],{"class":520},[510,2641,2642],{"class":512,"line":679},[510,2643,2644],{"class":1300},"  \u002F\u002F no drain here - falls back to globalDrain from initLogger, with full request context\n",[510,2646,2647,2649],{"class":512,"line":696},[510,2648,770],{"class":520},[510,2650,2206],{"class":524},[483,2652,2654],{"id":2653},"framework-specific-options","Framework-Specific Options",[470,2656,2657],{},"Some frameworks have additional options beyond the shared config:",[1060,2659,167],{"id":2660},"nuxt",[470,2662,2663,2664,2666,2667,2669],{},"The Nuxt module accepts all global options and middleware options in ",[488,2665,1223],{}," under the ",[488,2668,538],{}," key, plus:",[775,2671,2672,2684],{},[778,2673,2674],{},[781,2675,2676,2678,2680,2682],{},[784,2677,786],{},[784,2679,789],{},[784,2681,792],{},[784,2683,795],{},[797,2685,2686,2704,2722,2741],{},[781,2687,2688,2693,2697,2701],{},[802,2689,2690],{},[488,2691,2692],{},"console",[802,2694,2695],{},[488,2696,811],{},[802,2698,2699],{},[488,2700,816],{},[802,2702,2703],{},"Enable\u002Fdisable browser console output (client-side only)",[781,2705,2706,2711,2715,2719],{},[802,2707,2708],{},[488,2709,2710],{},"transport.enabled",[802,2712,2713],{},[488,2714,811],{},[802,2716,2717],{},[488,2718,822],{},[802,2720,2721],{},"Send client logs to the server via API endpoint",[781,2723,2724,2729,2733,2738],{},[802,2725,2726],{},[488,2727,2728],{},"transport.endpoint",[802,2730,2731],{},[488,2732,1479],{},[802,2734,2735],{},[488,2736,2737],{},"'\u002Fapi\u002F_evlog\u002Fingest'",[802,2739,2740],{},"Custom transport endpoint",[781,2742,2743,2748,2753,2758],{},[802,2744,2745],{},[488,2746,2747],{},"transport.credentials",[802,2749,2750],{},[488,2751,2752],{},"RequestCredentials",[802,2754,2755],{},[488,2756,2757],{},"'same-origin'",[802,2759,2760,2761,2764],{},"Fetch credentials mode (",[488,2762,2763],{},"'include'"," for cross-origin endpoints)",[470,2766,2767,2768,1058],{},"See the full ",[890,2769,2771],{"href":2770},"\u002Fintegrate\u002Fframeworks\u002Fnuxt#configuration","Nuxt configuration",[1060,2773,182],{"id":2774},"nitro",[470,2776,2777,2778,1050,2780,1050,2782,1050,2784,1050,2786,1050,2788,1050,2790,2792,2793,2795,2796,2799],{},"The Nitro module accepts ",[488,2779,806],{},[488,2781,830],{},[488,2783,848],{},[488,2785,900],{},[488,2787,970],{},[488,2789,2387],{},[488,2791,2406],{},", and ",[488,2794,2424],{}," in ",[488,2797,2798],{},"nitro.config.ts",". Drain and enrichment are done via Nitro hooks.",[470,2801,1431,2802,1058],{},[890,2803,2805],{"href":2804},"\u002Fintegrate\u002Fframeworks\u002Fnitro#drain--enrichers","Nitro drain & enrichers",[2807,2808,2809],"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 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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":506,"searchDepth":544,"depth":544,"links":2811},[2812,2820,2823],{"id":485,"depth":544,"text":2813,"children":2814},"Global Options (initLogger)",[2815,2817,2818,2819],{"id":1062,"depth":565,"text":2816},"minLevel vs sampling",{"id":1141,"depth":565,"text":893},{"id":1439,"depth":565,"text":1440},{"id":1590,"depth":565,"text":1591},{"id":1708,"depth":544,"text":1709,"children":2821},[2822],{"id":2515,"depth":565,"text":2516},{"id":2653,"depth":544,"text":2654,"children":2824},[2825,2826],{"id":2660,"depth":565,"text":167},{"id":2774,"depth":565,"text":182},"Complete reference for all evlog configuration options including global logger settings, middleware options, environment context, and framework-specific overrides.","md",[2830,2833],{"label":61,"icon":64,"to":62,"color":2831,"variant":2832},"neutral","subtle",{"label":2834,"icon":282,"to":95,"color":2831,"variant":2832},"Drain Adapters",{},{"icon":442},{"title":439,"description":2827},"_HkpwQbK6ceUYdWF9qsASthXqQT7TnGYvukrc6mvwVY",[2840,2842],{"title":430,"path":431,"stem":432,"description":2841,"icon":433,"children":-1},"Batch events, retry on failure, fan out to multiple destinations, and ship browser logs to your server. The shared pipeline that wraps every drain in production.",{"title":312,"path":444,"stem":445,"description":2843,"icon":315,"children":-1},"evlog adds ~3µs per request. Faster than pino, consola, and winston in most scenarios while emitting richer, more useful events.",1784213433588]