[{"data":1,"prerenderedAt":2205},["ShallowReactive",2],{"navigation_docs":3,"-integrate-adapters-cloud-axiom":529,"-integrate-adapters-cloud-axiom-surround":2200},[4,29,76,122,304,436,495],{"title":5,"path":6,"stem":7,"children":8,"page":28},"Start","\u002Fstart","1.start",[9,13,18,23],{"title":10,"path":11,"stem":12},"Introduction","\u002Fstart\u002Fintroduction","1.start\u002F1.introduction",{"title":14,"path":15,"stem":16,"icon":17},"Why start with evlog","\u002Fstart\u002Fwhy-evlog","1.start\u002F2.why-evlog","i-lucide-rocket",{"title":19,"path":20,"stem":21,"icon":22},"Installation","\u002Fstart\u002Finstallation","1.start\u002F3.installation","i-lucide-download",{"title":24,"path":25,"stem":26,"icon":27},"Quick Start","\u002Fstart\u002Fquick-start","1.start\u002F4.quick-start","i-lucide-zap",false,{"title":30,"path":31,"stem":32,"children":33,"page":28},"Learn","\u002Flearn","2.learn",[34,38,43,48,53,58,62,67,72],{"title":35,"path":36,"stem":37},"Learn evlog","\u002Flearn\u002Foverview","2.learn\u002F0.overview",{"title":39,"path":40,"stem":41,"icon":42},"Simple Logging","\u002Flearn\u002Fsimple-logging","2.learn\u002F1.simple-logging","i-lucide-terminal",{"title":44,"path":45,"stem":46,"icon":47},"Wide Events","\u002Flearn\u002Fwide-events","2.learn\u002F2.wide-events","i-lucide-layers",{"title":49,"path":50,"stem":51,"icon":52},"Structured Errors","\u002Flearn\u002Fstructured-errors","2.learn\u002F3.structured-errors","i-lucide-shield-alert",{"title":54,"path":55,"stem":56,"icon":57},"Lifecycle","\u002Flearn\u002Flifecycle","2.learn\u002F4.lifecycle","i-lucide-arrow-right-left",{"title":59,"path":60,"stem":61},"Sampling","\u002Flearn\u002Fsampling","2.learn\u002F5.sampling",{"title":63,"path":64,"stem":65,"icon":66},"Auto-Redaction","\u002Flearn\u002Fredaction","2.learn\u002F6.redaction","i-lucide-eye-off",{"title":68,"path":69,"stem":70,"icon":71},"Typed Fields","\u002Flearn\u002Ftyped-fields","2.learn\u002F7.typed-fields","i-simple-icons-typescript",{"title":73,"path":74,"stem":75},"Catalogs","\u002Flearn\u002Fcatalogs","2.learn\u002F8.catalogs",{"title":77,"path":78,"stem":79,"children":80,"page":28},"CLI","\u002Fcli","3.cli",[81,85,90,95,99,103,108,113,118],{"title":82,"path":83,"stem":84},"evlog CLI","\u002Fcli\u002Foverview","3.cli\u002F0.overview",{"title":86,"path":87,"stem":88,"icon":89},"init","\u002Fcli\u002Finit","3.cli\u002F1.init","i-lucide-wand-sparkles",{"title":91,"path":92,"stem":93,"icon":94},"map","\u002Fcli\u002Fmap","3.cli\u002F2.map","i-lucide-radar",{"title":96,"path":97,"stem":98},"Map rules","\u002Fcli\u002Frules","3.cli\u002F3.rules",{"title":100,"path":101,"stem":102},"Map scoring","\u002Fcli\u002Fscoring","3.cli\u002F4.scoring",{"title":104,"path":105,"stem":106,"icon":107},"CI","\u002Fcli\u002Fci","3.cli\u002F5.ci","i-lucide-git-pull-request",{"title":109,"path":110,"stem":111,"icon":112},"doctor","\u002Fcli\u002Fdoctor","3.cli\u002F6.doctor","i-lucide-stethoscope",{"title":114,"path":115,"stem":116,"icon":117},"telemetry","\u002Fcli\u002Ftelemetry","3.cli\u002F7.telemetry","i-lucide-bar-chart-3",{"title":119,"path":120,"stem":121},"evlog agents","\u002Fcli\u002Fagents","3.cli\u002F8.agents",{"title":123,"path":124,"stem":125,"children":126,"page":28},"Integrate","\u002Fintegrate","4.integrate",[127,132,216],{"title":128,"path":129,"stem":130,"icon":131},"Overview","\u002Fintegrate\u002Foverview","4.integrate\u002F0.overview","i-lucide-plug",{"title":133,"path":134,"stem":135,"children":136,"page":28},"Adapters","\u002Fintegrate\u002Fadapters","4.integrate\u002Fadapters",[137,141,171,196],{"title":128,"path":138,"stem":139,"icon":140},"\u002Fintegrate\u002Fadapters\u002Foverview","4.integrate\u002Fadapters\u002F01.overview","i-lucide-list",{"title":142,"path":143,"stem":144,"children":145,"page":28},"Cloud","\u002Fintegrate\u002Fadapters\u002Fcloud","4.integrate\u002Fadapters\u002Fcloud",[146,151,156,161,166],{"title":147,"path":148,"stem":149,"icon":150},"Axiom","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom","4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom","i-custom-axiom",{"title":152,"path":153,"stem":154,"icon":155},"PostHog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fposthog","4.integrate\u002Fadapters\u002Fcloud\u002F02.posthog","i-simple-icons-posthog",{"title":157,"path":158,"stem":159,"icon":160},"Sentry","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fsentry","4.integrate\u002Fadapters\u002Fcloud\u002F03.sentry","i-simple-icons-sentry",{"title":162,"path":163,"stem":164,"icon":165},"Better Stack","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fbetter-stack","4.integrate\u002Fadapters\u002Fcloud\u002F04.better-stack","i-simple-icons-betterstack",{"title":167,"path":168,"stem":169,"icon":170},"Datadog","\u002Fintegrate\u002Fadapters\u002Fcloud\u002Fdatadog","4.integrate\u002Fadapters\u002Fcloud\u002F05.datadog","i-simple-icons-datadog",{"title":172,"path":173,"stem":174,"children":175,"page":28},"Cloud or Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fhybrid","4.integrate\u002Fadapters\u002Fhybrid",[176,181,186,191],{"title":177,"path":178,"stem":179,"icon":180},"Grafana Loki","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Floki","4.integrate\u002Fadapters\u002Fhybrid\u002F01.loki","i-simple-icons-grafana",{"title":182,"path":183,"stem":184,"icon":185},"ClickHouse","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fclickhouse","4.integrate\u002Fadapters\u002Fhybrid\u002F02.clickhouse","i-simple-icons-clickhouse",{"title":187,"path":188,"stem":189,"icon":190},"OTLP","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fotlp","4.integrate\u002Fadapters\u002Fhybrid\u002F03.otlp","i-simple-icons-opentelemetry",{"title":192,"path":193,"stem":194,"icon":195},"HyperDX","\u002Fintegrate\u002Fadapters\u002Fhybrid\u002Fhyperdx","4.integrate\u002Fadapters\u002Fhybrid\u002F04.hyperdx","i-custom-hyperdx",{"title":197,"path":198,"stem":199,"children":200,"page":28},"Self-Hosted","\u002Fintegrate\u002Fadapters\u002Fself-hosted","4.integrate\u002Fadapters\u002Fself-hosted",[201,206,211],{"title":202,"path":203,"stem":204,"icon":205},"File System","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Ffs","4.integrate\u002Fadapters\u002Fself-hosted\u002F01.fs","i-lucide-hard-drive",{"title":207,"path":208,"stem":209,"icon":210},"NuxtHub","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fnuxthub","4.integrate\u002Fadapters\u002Fself-hosted\u002F02.nuxthub","i-simple-icons-nuxt",{"title":212,"path":213,"stem":214,"icon":215},"Memory","\u002Fintegrate\u002Fadapters\u002Fself-hosted\u002Fmemory","4.integrate\u002Fadapters\u002Fself-hosted\u002F03.memory","i-lucide-cpu",{"title":217,"path":218,"stem":219,"children":220,"page":28},"Frameworks","\u002Fintegrate\u002Fframeworks","4.integrate\u002Fframeworks",[221,225,230,235,240,245,250,255,260,265,270,275,280,285,289,294,299],{"title":128,"path":222,"stem":223,"icon":224},"\u002Fintegrate\u002Fframeworks\u002Foverview","4.integrate\u002Fframeworks\u002F00.overview","i-lucide-layout-grid",{"title":226,"path":227,"stem":228,"icon":229},"Nuxt","\u002Fintegrate\u002Fframeworks\u002Fnuxt","4.integrate\u002Fframeworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":231,"path":232,"stem":233,"icon":234},"Next.js","\u002Fintegrate\u002Fframeworks\u002Fnextjs","4.integrate\u002Fframeworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":236,"path":237,"stem":238,"icon":239},"SvelteKit","\u002Fintegrate\u002Fframeworks\u002Fsveltekit","4.integrate\u002Fframeworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":241,"path":242,"stem":243,"icon":244},"Nitro","\u002Fintegrate\u002Fframeworks\u002Fnitro","4.integrate\u002Fframeworks\u002F04.nitro","i-custom-nitro",{"title":246,"path":247,"stem":248,"icon":249},"TanStack Start","\u002Fintegrate\u002Fframeworks\u002Ftanstack-start","4.integrate\u002Fframeworks\u002F05.tanstack-start","i-custom-tanstack",{"title":251,"path":252,"stem":253,"icon":254},"NestJS","\u002Fintegrate\u002Fframeworks\u002Fnestjs","4.integrate\u002Fframeworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":256,"path":257,"stem":258,"icon":259},"Express","\u002Fintegrate\u002Fframeworks\u002Fexpress","4.integrate\u002Fframeworks\u002F07.express","i-simple-icons-express",{"title":261,"path":262,"stem":263,"icon":264},"Hono","\u002Fintegrate\u002Fframeworks\u002Fhono","4.integrate\u002Fframeworks\u002F08.hono","i-simple-icons-hono",{"title":266,"path":267,"stem":268,"icon":269},"Fastify","\u002Fintegrate\u002Fframeworks\u002Ffastify","4.integrate\u002Fframeworks\u002F09.fastify","i-simple-icons-fastify",{"title":271,"path":272,"stem":273,"icon":274},"Elysia","\u002Fintegrate\u002Fframeworks\u002Felysia","4.integrate\u002Fframeworks\u002F10.elysia","i-custom-elysia",{"title":276,"path":277,"stem":278,"icon":279},"React Router","\u002Fintegrate\u002Fframeworks\u002Freact-router","4.integrate\u002Fframeworks\u002F11.react-router","i-custom-reactrouter",{"title":281,"path":282,"stem":283,"icon":284},"Cloudflare Workers","\u002Fintegrate\u002Fframeworks\u002Fcloudflare-workers","4.integrate\u002Fframeworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":286,"path":287,"stem":288,"icon":71},"Standalone","\u002Fintegrate\u002Fframeworks\u002Fstandalone","4.integrate\u002Fframeworks\u002F13.standalone",{"title":290,"path":291,"stem":292,"icon":293},"Astro","\u002Fintegrate\u002Fframeworks\u002Fastro","4.integrate\u002Fframeworks\u002F14.astro","i-simple-icons-astro",{"title":295,"path":296,"stem":297,"icon":298},"oRPC","\u002Fintegrate\u002Fframeworks\u002Forpc","4.integrate\u002Fframeworks\u002F15.orpc","i-lucide-network",{"title":300,"path":301,"stem":302,"icon":303},"AWS Lambda","\u002Fintegrate\u002Fframeworks\u002Faws-lambda","4.integrate\u002Fframeworks\u002F16.aws-lambda","i-custom-lambda",{"title":305,"path":306,"stem":307,"children":308,"page":28},"Use Cases","\u002Fuse-cases","5.use-cases",[309,312,317,346,374,407,427,432],{"title":305,"path":310,"stem":311},"\u002Fuse-cases\u002Foverview","5.use-cases\u002F0.overview",{"title":313,"path":314,"stem":315,"icon":316},"Client Logging","\u002Fuse-cases\u002Fclient-logging","5.use-cases\u002F1.client-logging","i-lucide-monitor",{"title":318,"icon":319,"path":320,"stem":321,"children":322,"page":28},"AI SDK","i-simple-icons-vercel","\u002Fuse-cases\u002Fai-sdk","5.use-cases\u002F2.ai-sdk",[323,326,331,336,341],{"title":128,"path":324,"stem":325,"icon":140},"\u002Fuse-cases\u002Fai-sdk\u002Foverview","5.use-cases\u002F2.ai-sdk\u002F01.overview",{"title":327,"path":328,"stem":329,"icon":330},"Usage","\u002Fuse-cases\u002Fai-sdk\u002Fusage","5.use-cases\u002F2.ai-sdk\u002F02.usage","i-lucide-code",{"title":332,"path":333,"stem":334,"icon":335},"Options","\u002Fuse-cases\u002Fai-sdk\u002Foptions","5.use-cases\u002F2.ai-sdk\u002F03.options","i-lucide-sliders",{"title":337,"path":338,"stem":339,"icon":340},"Metadata","\u002Fuse-cases\u002Fai-sdk\u002Fmetadata","5.use-cases\u002F2.ai-sdk\u002F04.metadata","i-lucide-database",{"title":342,"path":343,"stem":344,"icon":345},"Telemetry","\u002Fuse-cases\u002Fai-sdk\u002Ftelemetry","5.use-cases\u002F2.ai-sdk\u002F05.telemetry","i-lucide-activity",{"title":347,"icon":348,"path":349,"stem":350,"children":351,"page":28},"Better Auth","i-simple-icons-betterauth","\u002Fuse-cases\u002Fbetter-auth","5.use-cases\u002F3.better-auth",[352,355,360,365,369],{"title":128,"path":353,"stem":354,"icon":140},"\u002Fuse-cases\u002Fbetter-auth\u002Foverview","5.use-cases\u002F3.better-auth\u002F01.overview",{"title":356,"path":357,"stem":358,"icon":359},"Identify User","\u002Fuse-cases\u002Fbetter-auth\u002Fidentify-user","5.use-cases\u002F3.better-auth\u002F02.identify-user","i-lucide-user-check",{"title":361,"path":362,"stem":363,"icon":364},"Middleware","\u002Fuse-cases\u002Fbetter-auth\u002Fmiddleware","5.use-cases\u002F3.better-auth\u002F03.middleware","i-lucide-shield",{"title":366,"path":367,"stem":368,"icon":316},"Client Sync","\u002Fuse-cases\u002Fbetter-auth\u002Fclient-sync","5.use-cases\u002F3.better-auth\u002F04.client-sync",{"title":370,"path":371,"stem":372,"icon":373},"Performance","\u002Fuse-cases\u002Fbetter-auth\u002Fperformance","5.use-cases\u002F3.better-auth\u002F05.performance","i-lucide-gauge",{"title":375,"icon":376,"path":377,"stem":378,"children":379,"page":28},"Audit Logs","i-lucide-shield-check","\u002Fuse-cases\u002Faudit","5.use-cases\u002F4.audit",[380,383,388,393,398,402],{"title":128,"path":381,"stem":382,"icon":140},"\u002Fuse-cases\u002Faudit\u002Foverview","5.use-cases\u002F4.audit\u002F01.overview",{"title":384,"path":385,"stem":386,"icon":387},"Schema","\u002Fuse-cases\u002Faudit\u002Fschema","5.use-cases\u002F4.audit\u002F02.schema","i-lucide-file-text",{"title":389,"path":390,"stem":391,"icon":392},"Recording","\u002Fuse-cases\u002Faudit\u002Frecording","5.use-cases\u002F4.audit\u002F03.recording","i-lucide-pen-line",{"title":394,"path":395,"stem":396,"icon":397},"Drains","\u002Fuse-cases\u002Faudit\u002Fpipeline","5.use-cases\u002F4.audit\u002F04.pipeline","i-lucide-link",{"title":399,"path":400,"stem":401,"icon":376},"Compliance","\u002Fuse-cases\u002Faudit\u002Fcompliance","5.use-cases\u002F4.audit\u002F05.compliance",{"title":403,"path":404,"stem":405,"icon":406},"Recipes","\u002Fuse-cases\u002Faudit\u002Frecipes","5.use-cases\u002F4.audit\u002F06.recipes","i-lucide-book-open",{"title":342,"icon":373,"path":408,"stem":409,"children":410,"page":28},"\u002Fuse-cases\u002Ftelemetry","5.use-cases\u002F4.telemetry",[411,414,419,423],{"title":128,"path":412,"stem":413,"icon":140},"\u002Fuse-cases\u002Ftelemetry\u002Foverview","5.use-cases\u002F4.telemetry\u002F01.overview",{"title":415,"path":416,"stem":417,"icon":418},"Setup","\u002Fuse-cases\u002Ftelemetry\u002Fsetup","5.use-cases\u002F4.telemetry\u002F02.setup","i-lucide-wrench",{"title":420,"path":421,"stem":422},"Telemetry Ingest","\u002Fuse-cases\u002Ftelemetry\u002Fingest","5.use-cases\u002F4.telemetry\u002F03.ingest",{"title":424,"path":425,"stem":426,"icon":406},"Reference","\u002Fuse-cases\u002Ftelemetry\u002Freference","5.use-cases\u002F4.telemetry\u002F04.reference",{"title":428,"path":429,"stem":430,"icon":431},"Enrichers","\u002Fuse-cases\u002Fenrichers","5.use-cases\u002F5.enrichers","i-lucide-sparkles",{"title":433,"path":434,"stem":435},"eve","\u002Fuse-cases\u002Feve","5.use-cases\u002F5.eve",{"title":437,"path":438,"stem":439,"children":440,"page":28},"Extend","\u002Fextend","6.extend",[441,445,450,455,459,464,468,472,476,481,486,491],{"title":128,"path":442,"stem":443,"icon":444},"\u002Fextend\u002Foverview","6.extend\u002F0.overview","i-lucide-blocks",{"title":446,"path":447,"stem":448,"icon":449},"Stream","\u002Fextend\u002Fstream","6.extend\u002F1.stream","i-lucide-radio-tower",{"title":451,"path":452,"stem":453,"icon":454},"Custom framework","\u002Fextend\u002Fcustom-framework","6.extend\u002F10.custom-framework","i-lucide-puzzle",{"title":456,"path":457,"stem":458,"icon":449},"Diagnostics channel","\u002Fextend\u002Fdiagnostics-channel","6.extend\u002F11.diagnostics-channel",{"title":460,"path":461,"stem":462,"icon":463},"FS reader","\u002Fextend\u002Ffs-reader","6.extend\u002F2.fs-reader","i-lucide-folder-search",{"title":403,"path":465,"stem":466,"icon":467},"\u002Fextend\u002Fconsumer-recipes","6.extend\u002F3.consumer-recipes","i-lucide-chef-hat",{"title":469,"path":470,"stem":471},"Plugins","\u002Fextend\u002Fplugins","6.extend\u002F4.plugins",{"title":473,"path":474,"stem":475,"icon":431},"Custom enrichers","\u002Fextend\u002Fcustom-enrichers","6.extend\u002F5.custom-enrichers",{"title":477,"path":478,"stem":479,"icon":480},"Tail sampling","\u002Fextend\u002Ftail-sampling","6.extend\u002F6.tail-sampling","i-lucide-filter",{"title":482,"path":483,"stem":484,"icon":485},"Identity headers","\u002Fextend\u002Fidentity-headers","6.extend\u002F7.identity-headers","i-lucide-fingerprint",{"title":487,"path":488,"stem":489,"icon":490},"Custom drains","\u002Fextend\u002Fcustom-drains","6.extend\u002F8.custom-drains","i-lucide-share-2",{"title":492,"path":493,"stem":494},"Drain Pipeline","\u002Fextend\u002Fdrain-pipeline","6.extend\u002F9.drain-pipeline",{"title":424,"path":496,"stem":497,"children":498,"page":28},"\u002Freference","7.reference",[499,504,507,512,516,521,525],{"title":500,"path":501,"stem":502,"icon":503},"Configuration","\u002Freference\u002Fconfiguration","7.reference\u002F1.configuration","i-lucide-settings",{"title":370,"path":505,"stem":506,"icon":373},"\u002Freference\u002Fperformance","7.reference\u002F2.performance",{"title":508,"path":509,"stem":510,"icon":511},"Vite Plugin","\u002Freference\u002Fvite-plugin","7.reference\u002F3.vite-plugin","i-custom-vite",{"title":513,"path":514,"stem":515,"icon":376},"Best Practices","\u002Freference\u002Fbest-practices","7.reference\u002F4.best-practices",{"title":517,"path":518,"stem":519,"icon":520},"vs Other Loggers","\u002Freference\u002Fvs-other-loggers","7.reference\u002F5.vs-other-loggers","i-lucide-scale",{"title":522,"path":523,"stem":524,"icon":431},"Agent Skills","\u002Freference\u002Fagent-skills","7.reference\u002F6.agent-skills",{"title":526,"path":527,"stem":528},"Log cost","\u002Freference\u002Fcost","7.reference\u002F7.cost",{"id":530,"title":531,"body":532,"description":2186,"extension":2187,"links":2188,"meta":2196,"navigation":2197,"path":148,"seo":2198,"stem":149,"__hash__":2199},"docs\u002F4.integrate\u002Fadapters\u002Fcloud\u002F01.axiom.md","Axiom Adapter",{"type":533,"value":534,"toc":2164},"minimark",[535,545,587,591,594,638,641,646,662,666,696,723,727,1305,1308,1311,1314,1343,1347,1415,1419,1426,1507,1511,1514,1571,1575,1731,1735,1738,1926,1930,1934,1943,1946,1950,1957,1961,1964,1978,1982,1985,2130,2134,2160],[536,537,538,544],"p",{},[539,540,147],"a",{"href":541,"rel":542},"https:\u002F\u002Faxiom.co",[543],"nofollow"," is a cloud-native logging platform that indexes every field of an event, so any of them is queryable without a schema. The evlog Axiom adapter sends your wide events directly to Axiom datasets.",[546,547,550,553,575],"prompt",{":actions":548,"description":549,"icon":150},"[\"copy\",\"cursor\",\"claude\"]","Add the Axiom drain adapter",[536,551,552],{},"Add the Axiom drain adapter to send evlog wide events to Axiom.",[554,555,556,560,563,566,569,572],"ol",{},[557,558,559],"li",{},"Identify which framework I'm using and follow its evlog integration pattern",[557,561,562],{},"Install evlog if not already installed",[557,564,565],{},"Import createAxiomDrain from 'evlog\u002Faxiom'",[557,567,568],{},"Wire createAxiomDrain() into my framework's drain configuration",[557,570,571],{},"Set AXIOM_API_KEY and AXIOM_DATASET environment variables in .env",[557,573,574],{},"Test by triggering a request and checking the Axiom dataset",[536,576,577,578,582,583],{},"Adapter docs: ",[539,579,580],{"href":580,"rel":581},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fadapters\u002Fcloud\u002Faxiom",[543],"\nFramework setup: ",[539,584,585],{"href":585,"rel":586},"https:\u002F\u002Fwww.evlog.dev\u002Fintegrate\u002Fframeworks\u002Foverview",[543],[588,589,19],"h2",{"id":590},"installation",[536,592,593],{},"The Axiom adapter comes bundled with evlog:",[595,596,602],"pre",{"className":597,"code":598,"filename":599,"language":600,"meta":601,"style":601},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createAxiomDrain } from 'evlog\u002Faxiom'\n","src\u002Findex.ts","typescript","",[603,604,605],"code",{"__ignoreMap":601},[606,607,610,614,618,622,625,628,631,635],"span",{"class":608,"line":609},"line",1,[606,611,613],{"class":612},"s7zQu","import",[606,615,617],{"class":616},"sMK4o"," {",[606,619,621],{"class":620},"sTEyZ"," createAxiomDrain",[606,623,624],{"class":616}," }",[606,626,627],{"class":612}," from",[606,629,630],{"class":616}," '",[606,632,634],{"class":633},"sfazB","evlog\u002Faxiom",[606,636,637],{"class":616},"'\n",[588,639,24],{"id":640},"quick-start",[642,643,645],"h3",{"id":644},"_1-get-your-axiom-credentials","1. Get your Axiom credentials",[554,647,648,656,659],{},[557,649,650,651],{},"Create an ",[539,652,655],{"href":653,"rel":654},"https:\u002F\u002Fapp.axiom.co",[543],"Axiom account",[557,657,658],{},"Create a dataset for your logs",[557,660,661],{},"Generate an API token with ingest permissions",[642,663,665],{"id":664},"_2-set-environment-variables","2. Set environment variables",[595,667,672],{"className":668,"code":669,"filename":670,"language":671,"meta":601,"style":601},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","AXIOM_API_KEY=xaat-your-token-here\nAXIOM_DATASET=your-dataset-name\n",".env","bash",[603,673,674,685],{"__ignoreMap":601},[606,675,676,679,682],{"class":608,"line":609},[606,677,678],{"class":620},"AXIOM_API_KEY",[606,680,681],{"class":616},"=",[606,683,684],{"class":633},"xaat-your-token-here\n",[606,686,688,691,693],{"class":608,"line":687},2,[606,689,690],{"class":620},"AXIOM_DATASET",[606,692,681],{"class":616},[606,694,695],{"class":633},"your-dataset-name\n",[697,698,701,702,706,707,710,711,714,715,718,719,722],"callout",{"color":699,"icon":700},"info","i-lucide-info","In Axiom's dashboard this credential is called an ",[703,704,705],"strong",{},"API token"," (",[603,708,709],{},"xaat-...","). evlog names the config field ",[603,712,713],{},"apiKey"," for consistency across adapters. Legacy ",[603,716,717],{},"token"," \u002F ",[603,720,721],{},"AXIOM_TOKEN"," still work until the next major release.",[642,724,726],{"id":725},"_3-wire-the-drain-to-your-framework","3. Wire the drain to your framework",[728,729,730,844,975,1037,1091,1150,1204,1257],"code-group",{},[595,731,734],{"className":597,"code":732,"filename":733,"language":600,"meta":601,"style":601},"\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createAxiomDrain())\n})\n","Nuxt \u002F Nitro",[603,735,736,742,760,767,799,835],{"__ignoreMap":601},[606,737,738],{"class":608,"line":609},[606,739,741],{"class":740},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[606,743,744,746,748,750,752,754,756,758],{"class":608,"line":687},[606,745,613],{"class":612},[606,747,617],{"class":616},[606,749,621],{"class":620},[606,751,624],{"class":616},[606,753,627],{"class":612},[606,755,630],{"class":616},[606,757,634],{"class":633},[606,759,637],{"class":616},[606,761,763],{"class":608,"line":762},3,[606,764,766],{"emptyLinePlaceholder":765},true,"\n",[606,768,770,773,776,780,783,785,789,792,796],{"class":608,"line":769},4,[606,771,772],{"class":612},"export",[606,774,775],{"class":612}," default",[606,777,779],{"class":778},"s2Zo4"," defineNitroPlugin",[606,781,782],{"class":620},"(",[606,784,782],{"class":616},[606,786,788],{"class":787},"sHdIc","nitroApp",[606,790,791],{"class":616},")",[606,793,795],{"class":794},"spNyl"," =>",[606,797,798],{"class":616}," {\n",[606,800,802,805,808,811,813,816,819,822,825,827,830,832],{"class":608,"line":801},5,[606,803,804],{"class":620},"  nitroApp",[606,806,807],{"class":616},".",[606,809,810],{"class":620},"hooks",[606,812,807],{"class":616},[606,814,815],{"class":778},"hook",[606,817,782],{"class":818},"swJcz",[606,820,821],{"class":616},"'",[606,823,824],{"class":633},"evlog:drain",[606,826,821],{"class":616},[606,828,829],{"class":616},",",[606,831,621],{"class":778},[606,833,834],{"class":818},"())\n",[606,836,838,841],{"class":608,"line":837},6,[606,839,840],{"class":616},"}",[606,842,843],{"class":620},")\n",[595,845,847],{"className":597,"code":846,"filename":231,"language":600,"meta":601,"style":601},"\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  drain: createAxiomDrain(),\n})\n",[603,848,849,854,874,892,896,935,953,968],{"__ignoreMap":601},[606,850,851],{"class":608,"line":609},[606,852,853],{"class":740},"\u002F\u002F lib\u002Fevlog.ts\n",[606,855,856,858,860,863,865,867,869,872],{"class":608,"line":687},[606,857,613],{"class":612},[606,859,617],{"class":616},[606,861,862],{"class":620}," createEvlog",[606,864,624],{"class":616},[606,866,627],{"class":612},[606,868,630],{"class":616},[606,870,871],{"class":633},"evlog\u002Fnext",[606,873,637],{"class":616},[606,875,876,878,880,882,884,886,888,890],{"class":608,"line":762},[606,877,613],{"class":612},[606,879,617],{"class":616},[606,881,621],{"class":620},[606,883,624],{"class":616},[606,885,627],{"class":612},[606,887,630],{"class":616},[606,889,634],{"class":633},[606,891,637],{"class":616},[606,893,894],{"class":608,"line":769},[606,895,766],{"emptyLinePlaceholder":765},[606,897,898,900,903,905,908,910,913,915,918,920,923,925,928,930,932],{"class":608,"line":801},[606,899,772],{"class":612},[606,901,902],{"class":794}," const",[606,904,617],{"class":616},[606,906,907],{"class":620}," withEvlog",[606,909,829],{"class":616},[606,911,912],{"class":620}," useLogger",[606,914,829],{"class":616},[606,916,917],{"class":620}," log",[606,919,829],{"class":616},[606,921,922],{"class":620}," createError ",[606,924,840],{"class":616},[606,926,927],{"class":616}," =",[606,929,862],{"class":778},[606,931,782],{"class":620},[606,933,934],{"class":616},"{\n",[606,936,937,940,943,945,948,950],{"class":608,"line":837},[606,938,939],{"class":818},"  service",[606,941,942],{"class":616},":",[606,944,630],{"class":616},[606,946,947],{"class":633},"my-app",[606,949,821],{"class":616},[606,951,952],{"class":616},",\n",[606,954,956,959,961,963,966],{"class":608,"line":955},7,[606,957,958],{"class":818},"  drain",[606,960,942],{"class":616},[606,962,621],{"class":778},[606,964,965],{"class":620},"()",[606,967,952],{"class":616},[606,969,971,973],{"class":608,"line":970},8,[606,972,840],{"class":616},[606,974,843],{"class":620},[595,976,978],{"className":597,"code":977,"filename":261,"language":600,"meta":601,"style":601},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\napp.use(evlog({ drain: createAxiomDrain() }))\n",[603,979,980,998,1002],{"__ignoreMap":601},[606,981,982,984,986,988,990,992,994,996],{"class":608,"line":609},[606,983,613],{"class":612},[606,985,617],{"class":616},[606,987,621],{"class":620},[606,989,624],{"class":616},[606,991,627],{"class":612},[606,993,630],{"class":616},[606,995,634],{"class":633},[606,997,637],{"class":616},[606,999,1000],{"class":608,"line":687},[606,1001,766],{"emptyLinePlaceholder":765},[606,1003,1004,1007,1009,1012,1014,1017,1019,1022,1025,1027,1029,1032,1034],{"class":608,"line":762},[606,1005,1006],{"class":620},"app",[606,1008,807],{"class":616},[606,1010,1011],{"class":778},"use",[606,1013,782],{"class":620},[606,1015,1016],{"class":778},"evlog",[606,1018,782],{"class":620},[606,1020,1021],{"class":616},"{",[606,1023,1024],{"class":818}," drain",[606,1026,942],{"class":616},[606,1028,621],{"class":778},[606,1030,1031],{"class":620},"() ",[606,1033,840],{"class":616},[606,1035,1036],{"class":620},"))\n",[595,1038,1039],{"className":597,"code":977,"filename":256,"language":600,"meta":601,"style":601},[603,1040,1041,1059,1063],{"__ignoreMap":601},[606,1042,1043,1045,1047,1049,1051,1053,1055,1057],{"class":608,"line":609},[606,1044,613],{"class":612},[606,1046,617],{"class":616},[606,1048,621],{"class":620},[606,1050,624],{"class":616},[606,1052,627],{"class":612},[606,1054,630],{"class":616},[606,1056,634],{"class":633},[606,1058,637],{"class":616},[606,1060,1061],{"class":608,"line":687},[606,1062,766],{"emptyLinePlaceholder":765},[606,1064,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089],{"class":608,"line":762},[606,1066,1006],{"class":620},[606,1068,807],{"class":616},[606,1070,1011],{"class":778},[606,1072,782],{"class":620},[606,1074,1016],{"class":778},[606,1076,782],{"class":620},[606,1078,1021],{"class":616},[606,1080,1024],{"class":818},[606,1082,942],{"class":616},[606,1084,621],{"class":778},[606,1086,1031],{"class":620},[606,1088,840],{"class":616},[606,1090,1036],{"class":620},[595,1092,1094],{"className":597,"code":1093,"filename":266,"language":600,"meta":601,"style":601},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nawait app.register(evlog, { drain: createAxiomDrain() })\n",[603,1095,1096,1114,1118],{"__ignoreMap":601},[606,1097,1098,1100,1102,1104,1106,1108,1110,1112],{"class":608,"line":609},[606,1099,613],{"class":612},[606,1101,617],{"class":616},[606,1103,621],{"class":620},[606,1105,624],{"class":616},[606,1107,627],{"class":612},[606,1109,630],{"class":616},[606,1111,634],{"class":633},[606,1113,637],{"class":616},[606,1115,1116],{"class":608,"line":687},[606,1117,766],{"emptyLinePlaceholder":765},[606,1119,1120,1123,1126,1128,1131,1134,1136,1138,1140,1142,1144,1146,1148],{"class":608,"line":762},[606,1121,1122],{"class":612},"await",[606,1124,1125],{"class":620}," app",[606,1127,807],{"class":616},[606,1129,1130],{"class":778},"register",[606,1132,1133],{"class":620},"(evlog",[606,1135,829],{"class":616},[606,1137,617],{"class":616},[606,1139,1024],{"class":818},[606,1141,942],{"class":616},[606,1143,621],{"class":778},[606,1145,1031],{"class":620},[606,1147,840],{"class":616},[606,1149,843],{"class":620},[595,1151,1152],{"className":597,"code":977,"filename":271,"language":600,"meta":601,"style":601},[603,1153,1154,1172,1176],{"__ignoreMap":601},[606,1155,1156,1158,1160,1162,1164,1166,1168,1170],{"class":608,"line":609},[606,1157,613],{"class":612},[606,1159,617],{"class":616},[606,1161,621],{"class":620},[606,1163,624],{"class":616},[606,1165,627],{"class":612},[606,1167,630],{"class":616},[606,1169,634],{"class":633},[606,1171,637],{"class":616},[606,1173,1174],{"class":608,"line":687},[606,1175,766],{"emptyLinePlaceholder":765},[606,1177,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202],{"class":608,"line":762},[606,1179,1006],{"class":620},[606,1181,807],{"class":616},[606,1183,1011],{"class":778},[606,1185,782],{"class":620},[606,1187,1016],{"class":778},[606,1189,782],{"class":620},[606,1191,1021],{"class":616},[606,1193,1024],{"class":818},[606,1195,942],{"class":616},[606,1197,621],{"class":778},[606,1199,1031],{"class":620},[606,1201,840],{"class":616},[606,1203,1036],{"class":620},[595,1205,1207],{"className":597,"code":1206,"filename":251,"language":600,"meta":601,"style":601},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nEvlogModule.forRoot({ drain: createAxiomDrain() })\n",[603,1208,1209,1227,1231],{"__ignoreMap":601},[606,1210,1211,1213,1215,1217,1219,1221,1223,1225],{"class":608,"line":609},[606,1212,613],{"class":612},[606,1214,617],{"class":616},[606,1216,621],{"class":620},[606,1218,624],{"class":616},[606,1220,627],{"class":612},[606,1222,630],{"class":616},[606,1224,634],{"class":633},[606,1226,637],{"class":616},[606,1228,1229],{"class":608,"line":687},[606,1230,766],{"emptyLinePlaceholder":765},[606,1232,1233,1236,1238,1241,1243,1245,1247,1249,1251,1253,1255],{"class":608,"line":762},[606,1234,1235],{"class":620},"EvlogModule",[606,1237,807],{"class":616},[606,1239,1240],{"class":778},"forRoot",[606,1242,782],{"class":620},[606,1244,1021],{"class":616},[606,1246,1024],{"class":818},[606,1248,942],{"class":616},[606,1250,621],{"class":778},[606,1252,1031],{"class":620},[606,1254,840],{"class":616},[606,1256,843],{"class":620},[595,1258,1260],{"className":597,"code":1259,"filename":286,"language":600,"meta":601,"style":601},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({ drain: createAxiomDrain() })\n",[603,1261,1262,1280,1284],{"__ignoreMap":601},[606,1263,1264,1266,1268,1270,1272,1274,1276,1278],{"class":608,"line":609},[606,1265,613],{"class":612},[606,1267,617],{"class":616},[606,1269,621],{"class":620},[606,1271,624],{"class":616},[606,1273,627],{"class":612},[606,1275,630],{"class":616},[606,1277,634],{"class":633},[606,1279,637],{"class":616},[606,1281,1282],{"class":608,"line":687},[606,1283,766],{"emptyLinePlaceholder":765},[606,1285,1286,1289,1291,1293,1295,1297,1299,1301,1303],{"class":608,"line":762},[606,1287,1288],{"class":778},"initLogger",[606,1290,782],{"class":620},[606,1292,1021],{"class":616},[606,1294,1024],{"class":818},[606,1296,942],{"class":616},[606,1298,621],{"class":778},[606,1300,1031],{"class":620},[606,1302,840],{"class":616},[606,1304,843],{"class":620},[536,1306,1307],{},"That's it! Your logs will now appear in Axiom.",[588,1309,500],{"id":1310},"configuration",[536,1312,1313],{},"The adapter reads configuration from multiple sources (highest priority first):",[554,1315,1316,1325,1335],{},[557,1317,1318,1321,1322],{},[703,1319,1320],{},"Overrides"," passed to ",[603,1323,1324],{},"createAxiomDrain()",[557,1326,1327,1330,1331,1334],{},[703,1328,1329],{},"Runtime config"," at ",[603,1332,1333],{},"runtimeConfig.axiom"," (Nuxt\u002FNitro only)",[557,1336,1337,706,1340,791],{},[703,1338,1339],{},"Environment variables",[603,1341,1342],{},"AXIOM_*",[642,1344,1346],{"id":1345},"environment-variables","Environment Variables",[1348,1349,1350,1363],"table",{},[1351,1352,1353],"thead",{},[1354,1355,1356,1360],"tr",{},[1357,1358,1359],"th",{},"Variable",[1357,1361,1362],{},"Description",[1364,1365,1366,1376,1385,1395,1405],"tbody",{},[1354,1367,1368,1373],{},[1369,1370,1371],"td",{},[603,1372,678],{},[1369,1374,1375],{},"Axiom API token with ingest permissions",[1354,1377,1378,1382],{},[1369,1379,1380],{},[603,1381,690],{},[1369,1383,1384],{},"Dataset name to ingest logs into",[1354,1386,1387,1392],{},[1369,1388,1389],{},[603,1390,1391],{},"AXIOM_ORG_ID",[1369,1393,1394],{},"Organization ID (required for Personal Access Tokens)",[1354,1396,1397,1402],{},[1369,1398,1399],{},[603,1400,1401],{},"AXIOM_EDGE_URL",[1369,1403,1404],{},"Edge base URL for ingest\u002Fquery (for edge deployments)",[1354,1406,1407,1412],{},[1369,1408,1409],{},[603,1410,1411],{},"AXIOM_URL",[1369,1413,1414],{},"API base URL (legacy\u002Fdefault ingest endpoint)",[642,1416,1418],{"id":1417},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[536,1420,1421,1422,1425],{},"Configure via ",[603,1423,1424],{},"nuxt.config.ts"," for type-safe configuration:",[595,1427,1429],{"className":597,"code":1428,"filename":1424,"language":600,"meta":601,"style":601},"export default defineNuxtConfig({\n  runtimeConfig: {\n    axiom: {\n      apiKey: '', \u002F\u002F Set via AXIOM_API_KEY\n      dataset: '', \u002F\u002F Set via AXIOM_DATASET\n    },\n  },\n})\n",[603,1430,1431,1444,1453,1462,1477,1491,1496,1501],{"__ignoreMap":601},[606,1432,1433,1435,1437,1440,1442],{"class":608,"line":609},[606,1434,772],{"class":612},[606,1436,775],{"class":612},[606,1438,1439],{"class":778}," defineNuxtConfig",[606,1441,782],{"class":620},[606,1443,934],{"class":616},[606,1445,1446,1449,1451],{"class":608,"line":687},[606,1447,1448],{"class":818},"  runtimeConfig",[606,1450,942],{"class":616},[606,1452,798],{"class":616},[606,1454,1455,1458,1460],{"class":608,"line":762},[606,1456,1457],{"class":818},"    axiom",[606,1459,942],{"class":616},[606,1461,798],{"class":616},[606,1463,1464,1467,1469,1472,1474],{"class":608,"line":769},[606,1465,1466],{"class":818},"      apiKey",[606,1468,942],{"class":616},[606,1470,1471],{"class":616}," ''",[606,1473,829],{"class":616},[606,1475,1476],{"class":740}," \u002F\u002F Set via AXIOM_API_KEY\n",[606,1478,1479,1482,1484,1486,1488],{"class":608,"line":801},[606,1480,1481],{"class":818},"      dataset",[606,1483,942],{"class":616},[606,1485,1471],{"class":616},[606,1487,829],{"class":616},[606,1489,1490],{"class":740}," \u002F\u002F Set via AXIOM_DATASET\n",[606,1492,1493],{"class":608,"line":837},[606,1494,1495],{"class":616},"    },\n",[606,1497,1498],{"class":608,"line":955},[606,1499,1500],{"class":616},"  },\n",[606,1502,1503,1505],{"class":608,"line":970},[606,1504,840],{"class":616},[606,1506,843],{"class":620},[642,1508,1510],{"id":1509},"override-options","Override Options",[536,1512,1513],{},"Pass options directly to override any configuration:",[595,1515,1518],{"className":597,"code":1516,"filename":1517,"language":600,"meta":601,"style":601},"const drain = createAxiomDrain({\n  dataset: 'production-logs',\n  timeout: 10000,\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[603,1519,1520,1536,1552,1565],{"__ignoreMap":601},[606,1521,1522,1525,1528,1530,1532,1534],{"class":608,"line":609},[606,1523,1524],{"class":794},"const",[606,1526,1527],{"class":620}," drain ",[606,1529,681],{"class":616},[606,1531,621],{"class":778},[606,1533,782],{"class":620},[606,1535,934],{"class":616},[606,1537,1538,1541,1543,1545,1548,1550],{"class":608,"line":687},[606,1539,1540],{"class":818},"  dataset",[606,1542,942],{"class":616},[606,1544,630],{"class":616},[606,1546,1547],{"class":633},"production-logs",[606,1549,821],{"class":616},[606,1551,952],{"class":616},[606,1553,1554,1557,1559,1563],{"class":608,"line":762},[606,1555,1556],{"class":818},"  timeout",[606,1558,942],{"class":616},[606,1560,1562],{"class":1561},"sbssI"," 10000",[606,1564,952],{"class":616},[606,1566,1567,1569],{"class":608,"line":769},[606,1568,840],{"class":616},[606,1570,843],{"class":620},[642,1572,1574],{"id":1573},"full-configuration-reference","Full Configuration Reference",[1348,1576,1577,1592],{},[1351,1578,1579],{},[1354,1580,1581,1584,1587,1590],{},[1357,1582,1583],{},"Option",[1357,1585,1586],{},"Type",[1357,1588,1589],{},"Default",[1357,1591,1362],{},[1364,1593,1594,1611,1632,1648,1664,1687,1711],{},[1354,1595,1596,1600,1605,1608],{},[1369,1597,1598],{},[603,1599,713],{},[1369,1601,1602],{},[603,1603,1604],{},"string",[1369,1606,1607],{},"-",[1369,1609,1610],{},"Axiom API token (required)",[1354,1612,1613,1617,1621,1623],{},[1369,1614,1615],{},[603,1616,717],{},[1369,1618,1619],{},[603,1620,1604],{},[1369,1622,1607],{},[1369,1624,1625,1628,1629,1631],{},[703,1626,1627],{},"Deprecated."," Use ",[603,1630,713],{}," instead",[1354,1633,1634,1639,1643,1645],{},[1369,1635,1636],{},[603,1637,1638],{},"dataset",[1369,1640,1641],{},[603,1642,1604],{},[1369,1644,1607],{},[1369,1646,1647],{},"Dataset name (required)",[1354,1649,1650,1655,1659,1661],{},[1369,1651,1652],{},[603,1653,1654],{},"orgId",[1369,1656,1657],{},[603,1658,1604],{},[1369,1660,1607],{},[1369,1662,1663],{},"Organization ID (for PAT tokens)",[1354,1665,1666,1671,1675,1677],{},[1369,1667,1668],{},[603,1669,1670],{},"edgeUrl",[1369,1672,1673],{},[603,1674,1604],{},[1369,1676,1607],{},[1369,1678,1679,1680,1683,1684],{},"Edge URL for ingest. Uses ",[603,1681,1682],{},"\u002Fv1\u002Fingest\u002F{dataset}"," when no path is provided; custom paths are used as-is (trailing slash trimmed). Mutually exclusive with ",[603,1685,1686],{},"baseUrl",[1354,1688,1689,1693,1697,1702],{},[1369,1690,1691],{},[603,1692,1686],{},[1369,1694,1695],{},[603,1696,1604],{},[1369,1698,1699],{},[603,1700,1701],{},"https:\u002F\u002Fapi.axiom.co",[1369,1703,1704,1705,1708,1709],{},"API base URL (",[603,1706,1707],{},"\u002Fv1\u002Fdatasets\u002F{dataset}\u002Fingest","), mutually exclusive with ",[603,1710,1670],{},[1354,1712,1713,1718,1723,1728],{},[1369,1714,1715],{},[603,1716,1717],{},"timeout",[1369,1719,1720],{},[603,1721,1722],{},"number",[1369,1724,1725],{},[603,1726,1727],{},"5000",[1369,1729,1730],{},"Request timeout in milliseconds",[588,1732,1734],{"id":1733},"querying-logs-in-axiom","Querying Logs in Axiom",[536,1736,1737],{},"evlog sends structured wide events that are perfect for Axiom's APL query language:",[595,1739,1744],{"className":1740,"code":1741,"filename":1742,"language":1743,"meta":601,"style":601},"language-apl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Find slow requests\n['your-dataset']\n| where durationMs > 1000\n| project timestamp, path, durationMs, status\n\n\u002F\u002F Error rate by endpoint\n['your-dataset']\n| where level == \"error\"\n| summarize count() by path\n| order by count_ desc\n\n\u002F\u002F Request volume over time\n['your-dataset']\n| summarize count() by bin(timestamp, 1h)\n| render timechart\n","Axiom APL queries","apl",[603,1745,1746,1754,1769,1783,1805,1809,1816,1828,1847,1860,1868,1873,1881,1894,1918],{"__ignoreMap":601},[606,1747,1748,1751],{"class":608,"line":609},[606,1749,1750],{"class":616},"\u002F\u002F",[606,1752,1753],{"class":620}," Find slow requests\n",[606,1755,1756,1759,1761,1764,1766],{"class":608,"line":687},[606,1757,1758],{"class":616},"[",[606,1760,821],{"class":616},[606,1762,1763],{"class":633},"your-dataset",[606,1765,821],{"class":616},[606,1767,1768],{"class":616},"]\n",[606,1770,1771,1774,1777,1780],{"class":608,"line":762},[606,1772,1773],{"class":616},"|",[606,1775,1776],{"class":620}," where durationMs ",[606,1778,1779],{"class":616},">",[606,1781,1782],{"class":1561}," 1000\n",[606,1784,1785,1787,1790,1792,1795,1797,1800,1802],{"class":608,"line":769},[606,1786,1773],{"class":616},[606,1788,1789],{"class":620}," project timestamp",[606,1791,829],{"class":616},[606,1793,1794],{"class":620}," path",[606,1796,829],{"class":616},[606,1798,1799],{"class":620}," durationMs",[606,1801,829],{"class":616},[606,1803,1804],{"class":620}," status\n",[606,1806,1807],{"class":608,"line":801},[606,1808,766],{"emptyLinePlaceholder":765},[606,1810,1811,1813],{"class":608,"line":837},[606,1812,1750],{"class":616},[606,1814,1815],{"class":620}," Error rate by endpoint\n",[606,1817,1818,1820,1822,1824,1826],{"class":608,"line":955},[606,1819,1758],{"class":616},[606,1821,821],{"class":616},[606,1823,1763],{"class":633},[606,1825,821],{"class":616},[606,1827,1768],{"class":616},[606,1829,1830,1832,1835,1838,1841,1844],{"class":608,"line":970},[606,1831,1773],{"class":616},[606,1833,1834],{"class":620}," where level ",[606,1836,1837],{"class":616},"==",[606,1839,1840],{"class":616}," \"",[606,1842,1843],{"class":633},"error",[606,1845,1846],{"class":616},"\"\n",[606,1848,1850,1852,1855,1857],{"class":608,"line":1849},9,[606,1851,1773],{"class":616},[606,1853,1854],{"class":620}," summarize count",[606,1856,965],{"class":616},[606,1858,1859],{"class":620}," by path\n",[606,1861,1863,1865],{"class":608,"line":1862},10,[606,1864,1773],{"class":616},[606,1866,1867],{"class":620}," order by count_ desc\n",[606,1869,1871],{"class":608,"line":1870},11,[606,1872,766],{"emptyLinePlaceholder":765},[606,1874,1876,1878],{"class":608,"line":1875},12,[606,1877,1750],{"class":616},[606,1879,1880],{"class":620}," Request volume over time\n",[606,1882,1884,1886,1888,1890,1892],{"class":608,"line":1883},13,[606,1885,1758],{"class":616},[606,1887,821],{"class":616},[606,1889,1763],{"class":633},[606,1891,821],{"class":616},[606,1893,1768],{"class":616},[606,1895,1897,1899,1901,1903,1906,1908,1911,1913,1916],{"class":608,"line":1896},14,[606,1898,1773],{"class":616},[606,1900,1854],{"class":620},[606,1902,965],{"class":616},[606,1904,1905],{"class":620}," by bin",[606,1907,782],{"class":616},[606,1909,1910],{"class":620},"timestamp",[606,1912,829],{"class":616},[606,1914,1915],{"class":1561}," 1h",[606,1917,843],{"class":616},[606,1919,1921,1923],{"class":608,"line":1920},15,[606,1922,1773],{"class":616},[606,1924,1925],{"class":620}," render timechart\n",[588,1927,1929],{"id":1928},"troubleshooting","Troubleshooting",[642,1931,1933],{"id":1932},"missing-dataset-or-apikey-error","Missing dataset or apiKey error",[595,1935,1941],{"className":1936,"code":1938,"filename":1939,"language":1940,"meta":601},[1937],"language-text","[evlog\u002Faxiom] Missing dataset or apiKey. Set AXIOM_API_KEY\u002FAXIOM_DATASET env vars or pass to createAxiomDrain()\n","Console","text",[603,1942,1938],{"__ignoreMap":601},[536,1944,1945],{},"Make sure your environment variables are set and the server was restarted after adding them.",[642,1947,1949],{"id":1948},"_401-unauthorized","401 Unauthorized",[536,1951,1952,1953,1956],{},"Your token may be invalid or expired. Generate a new token in the Axiom dashboard with ",[703,1954,1955],{},"Ingest"," permissions.",[642,1958,1960],{"id":1959},"_403-forbidden-with-pat-tokens","403 Forbidden with PAT tokens",[536,1962,1963],{},"Personal Access Tokens require an organization ID:",[595,1965,1967],{"className":668,"code":1966,"filename":670,"language":671,"meta":601,"style":601},"AXIOM_ORG_ID=your-org-id\n",[603,1968,1969],{"__ignoreMap":601},[606,1970,1971,1973,1975],{"class":608,"line":609},[606,1972,1391],{"class":620},[606,1974,681],{"class":616},[606,1976,1977],{"class":633},"your-org-id\n",[588,1979,1981],{"id":1980},"direct-api-usage","Direct API Usage",[536,1983,1984],{},"For advanced use cases, you can use the lower-level functions:",[595,1986,1989],{"className":597,"code":1987,"filename":1988,"language":600,"meta":601,"style":601},"import { sendToAxiom, sendBatchToAxiom } from 'evlog\u002Faxiom'\n\n\u002F\u002F Send a single event\nawait sendToAxiom(event, {\n  apiKey: 'xaat-xxx',\n  dataset: 'logs',\n})\n\n\u002F\u002F Send multiple events in one request\nawait sendBatchToAxiom(events, {\n  apiKey: 'xaat-xxx',\n  dataset: 'logs',\n})\n","server\u002Futils\u002Faxiom.ts",[603,1990,1991,2015,2019,2024,2037,2053,2068,2074,2078,2083,2096,2110,2124],{"__ignoreMap":601},[606,1992,1993,1995,1997,2000,2002,2005,2007,2009,2011,2013],{"class":608,"line":609},[606,1994,613],{"class":612},[606,1996,617],{"class":616},[606,1998,1999],{"class":620}," sendToAxiom",[606,2001,829],{"class":616},[606,2003,2004],{"class":620}," sendBatchToAxiom",[606,2006,624],{"class":616},[606,2008,627],{"class":612},[606,2010,630],{"class":616},[606,2012,634],{"class":633},[606,2014,637],{"class":616},[606,2016,2017],{"class":608,"line":687},[606,2018,766],{"emptyLinePlaceholder":765},[606,2020,2021],{"class":608,"line":762},[606,2022,2023],{"class":740},"\u002F\u002F Send a single event\n",[606,2025,2026,2028,2030,2033,2035],{"class":608,"line":769},[606,2027,1122],{"class":612},[606,2029,1999],{"class":778},[606,2031,2032],{"class":620},"(event",[606,2034,829],{"class":616},[606,2036,798],{"class":616},[606,2038,2039,2042,2044,2046,2049,2051],{"class":608,"line":801},[606,2040,2041],{"class":818},"  apiKey",[606,2043,942],{"class":616},[606,2045,630],{"class":616},[606,2047,2048],{"class":633},"xaat-xxx",[606,2050,821],{"class":616},[606,2052,952],{"class":616},[606,2054,2055,2057,2059,2061,2064,2066],{"class":608,"line":837},[606,2056,1540],{"class":818},[606,2058,942],{"class":616},[606,2060,630],{"class":616},[606,2062,2063],{"class":633},"logs",[606,2065,821],{"class":616},[606,2067,952],{"class":616},[606,2069,2070,2072],{"class":608,"line":955},[606,2071,840],{"class":616},[606,2073,843],{"class":620},[606,2075,2076],{"class":608,"line":970},[606,2077,766],{"emptyLinePlaceholder":765},[606,2079,2080],{"class":608,"line":1849},[606,2081,2082],{"class":740},"\u002F\u002F Send multiple events in one request\n",[606,2084,2085,2087,2089,2092,2094],{"class":608,"line":1862},[606,2086,1122],{"class":612},[606,2088,2004],{"class":778},[606,2090,2091],{"class":620},"(events",[606,2093,829],{"class":616},[606,2095,798],{"class":616},[606,2097,2098,2100,2102,2104,2106,2108],{"class":608,"line":1870},[606,2099,2041],{"class":818},[606,2101,942],{"class":616},[606,2103,630],{"class":616},[606,2105,2048],{"class":633},[606,2107,821],{"class":616},[606,2109,952],{"class":616},[606,2111,2112,2114,2116,2118,2120,2122],{"class":608,"line":1875},[606,2113,1540],{"class":818},[606,2115,942],{"class":616},[606,2117,630],{"class":616},[606,2119,2063],{"class":633},[606,2121,821],{"class":616},[606,2123,952],{"class":616},[606,2125,2126,2128],{"class":608,"line":1883},[606,2127,840],{"class":616},[606,2129,843],{"class":620},[588,2131,2133],{"id":2132},"next-steps","Next Steps",[2135,2136,2137,2143,2149,2155],"ul",{},[557,2138,2139,2142],{},[539,2140,2141],{"href":188},"OTLP Adapter"," - Send logs via OpenTelemetry Protocol",[557,2144,2145,2148],{},[539,2146,2147],{"href":153},"PostHog Adapter"," - Send logs to PostHog",[557,2150,2151,2154],{},[539,2152,2153],{"href":488},"Custom Adapters"," - Build your own adapter",[557,2156,2157,2159],{},[539,2158,513],{"href":514}," - Security and production tips",[2161,2162,2163],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":601,"searchDepth":687,"depth":687,"links":2165},[2166,2167,2172,2178,2179,2184,2185],{"id":590,"depth":687,"text":19},{"id":640,"depth":687,"text":24,"children":2168},[2169,2170,2171],{"id":644,"depth":762,"text":645},{"id":664,"depth":762,"text":665},{"id":725,"depth":762,"text":726},{"id":1310,"depth":687,"text":500,"children":2173},[2174,2175,2176,2177],{"id":1345,"depth":762,"text":1346},{"id":1417,"depth":762,"text":1418},{"id":1509,"depth":762,"text":1510},{"id":1573,"depth":762,"text":1574},{"id":1733,"depth":687,"text":1734},{"id":1928,"depth":687,"text":1929,"children":2180},[2181,2182,2183],{"id":1932,"depth":762,"text":1933},{"id":1948,"depth":762,"text":1949},{"id":1959,"depth":762,"text":1960},{"id":1980,"depth":687,"text":1981},{"id":2132,"depth":687,"text":2133},"Send wide events to Axiom for powerful querying, dashboards, and alerting. Zero-config setup with environment variables and automatic batching.","md",[2189,2195],{"label":2190,"icon":2191,"to":653,"target":2192,"color":2193,"variant":2194},"Axiom Dashboard","i-lucide-external-link","_blank","neutral","subtle",{"label":2141,"icon":190,"to":188,"color":2193,"variant":2194},{},{"title":147,"icon":150},{"title":531,"description":2186},"D2R2krTZRVZiNLw-QwBQtVg6zre8X2ApBvy6mjU3F1M",[2201,2203],{"title":128,"path":138,"stem":139,"description":2202,"icon":140,"children":-1},"Send your logs to external services with evlog adapters. Built-in support for popular observability platforms and custom destinations.",{"title":152,"path":153,"stem":154,"description":2204,"icon":155,"children":-1},"Send wide events to PostHog Logs via OTLP for structured log querying, debugging, and observability in your PostHog dashboard.",1786799158922]