[{"data":1,"prerenderedAt":1705},["ShallowReactive",2],{"navigation_docs":3,"-adapters-axiom":238,"-adapters-axiom-surround":1700},[4,30,110,154,208,224],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fgetting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","\u002Fgetting-started\u002Fagent-skills","1.getting-started\u002F4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Frameworks","\u002Fframeworks","2.frameworks",[35,40,45,50,55,60,65,70,75,80,85,90,95,100,105],{"title":36,"path":37,"stem":38,"icon":39},"Overview","\u002Fframeworks\u002Foverview","2.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":41,"path":42,"stem":43,"icon":44},"Nuxt","\u002Fframeworks\u002Fnuxt","2.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":46,"path":47,"stem":48,"icon":49},"Next.js","\u002Fframeworks\u002Fnextjs","2.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":51,"path":52,"stem":53,"icon":54},"SvelteKit","\u002Fframeworks\u002Fsveltekit","2.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":56,"path":57,"stem":58,"icon":59},"Nitro","\u002Fframeworks\u002Fnitro","2.frameworks\u002F04.nitro","i-custom-nitro",{"title":61,"path":62,"stem":63,"icon":64},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","2.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":66,"path":67,"stem":68,"icon":69},"NestJS","\u002Fframeworks\u002Fnestjs","2.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":71,"path":72,"stem":73,"icon":74},"Express","\u002Fframeworks\u002Fexpress","2.frameworks\u002F07.express","i-simple-icons-express",{"title":76,"path":77,"stem":78,"icon":79},"Hono","\u002Fframeworks\u002Fhono","2.frameworks\u002F08.hono","i-simple-icons-hono",{"title":81,"path":82,"stem":83,"icon":84},"Fastify","\u002Fframeworks\u002Ffastify","2.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":86,"path":87,"stem":88,"icon":89},"Elysia","\u002Fframeworks\u002Felysia","2.frameworks\u002F10.elysia","i-custom-elysia",{"title":91,"path":92,"stem":93,"icon":94},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","2.frameworks\u002F11.cloudflare-workers","i-simple-icons-cloudflare",{"title":96,"path":97,"stem":98,"icon":99},"Standalone","\u002Fframeworks\u002Fstandalone","2.frameworks\u002F12.standalone","i-simple-icons-typescript",{"title":101,"path":102,"stem":103,"icon":104},"Astro","\u002Fframeworks\u002Fastro","2.frameworks\u002F13.astro","i-simple-icons-astro",{"title":106,"path":107,"stem":108,"icon":109},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","2.frameworks\u002F14.custom-integration","i-lucide-puzzle",{"title":111,"path":112,"stem":113,"children":114,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[115,120,125,130,135,139,144,149],{"title":116,"path":117,"stem":118,"icon":119},"Request Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":121,"path":122,"stem":123,"icon":124},"Wide Events","\u002Fcore-concepts\u002Fwide-events","3.core-concepts\u002F1.wide-events","i-lucide-layers",{"title":126,"path":127,"stem":128,"icon":129},"Structured Errors","\u002Fcore-concepts\u002Fstructured-errors","3.core-concepts\u002F2.structured-errors","i-lucide-shield-alert",{"title":131,"path":132,"stem":133,"icon":134},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F3.best-practices","i-lucide-shield-check",{"title":136,"path":137,"stem":138,"icon":99},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F4.typed-fields",{"title":140,"path":141,"stem":142,"icon":143},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F5.sampling","i-lucide-filter",{"title":145,"path":146,"stem":147,"icon":148},"Client Logging","\u002Fcore-concepts\u002Fclient-logging","3.core-concepts\u002F6.client-logging","i-lucide-monitor",{"title":150,"path":151,"stem":152,"icon":153},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F7.configuration","i-lucide-settings",{"title":155,"path":156,"stem":157,"children":158,"page":29},"Adapters","\u002Fadapters","4.adapters",[159,163,168,173,178,183,188,193,198,203],{"title":36,"path":160,"stem":161,"icon":162},"\u002Fadapters\u002Foverview","4.adapters\u002F1.overview","i-custom-plug",{"title":164,"path":165,"stem":166,"icon":167},"Browser","\u002Fadapters\u002Fbrowser","4.adapters\u002F10.browser","i-lucide-globe",{"title":169,"path":170,"stem":171,"icon":172},"Axiom","\u002Fadapters\u002Faxiom","4.adapters\u002F2.axiom","i-custom-axiom",{"title":174,"path":175,"stem":176,"icon":177},"OTLP","\u002Fadapters\u002Fotlp","4.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":179,"path":180,"stem":181,"icon":182},"PostHog","\u002Fadapters\u002Fposthog","4.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":184,"path":185,"stem":186,"icon":187},"Sentry","\u002Fadapters\u002Fsentry","4.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":189,"path":190,"stem":191,"icon":192},"Better Stack","\u002Fadapters\u002Fbetter-stack","4.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":194,"path":195,"stem":196,"icon":197},"File System","\u002Fadapters\u002Ffs","4.adapters\u002F7.fs","i-lucide-hard-drive",{"title":199,"path":200,"stem":201,"icon":202},"Custom Adapters","\u002Fadapters\u002Fcustom","4.adapters\u002F8.custom","i-lucide-code",{"title":204,"path":205,"stem":206,"icon":207},"Pipeline","\u002Fadapters\u002Fpipeline","4.adapters\u002F9.pipeline","i-lucide-workflow",{"title":209,"path":210,"stem":211,"children":212,"page":29},"Enrichers","\u002Fenrichers","5.enrichers",[213,216,220],{"title":36,"path":214,"stem":215,"icon":28},"\u002Fenrichers\u002Foverview","5.enrichers\u002F1.overview",{"title":217,"path":218,"stem":219,"icon":109},"Built-in","\u002Fenrichers\u002Fbuilt-in","5.enrichers\u002F2.built-in",{"title":221,"path":222,"stem":223,"icon":202},"Custom","\u002Fenrichers\u002Fcustom","5.enrichers\u002F3.custom",{"title":225,"path":226,"stem":227,"children":228,"page":29},"NuxtHub","\u002Fnuxthub","6.nuxthub",[229,233],{"title":36,"path":230,"stem":231,"icon":232},"\u002Fnuxthub\u002Foverview","6.nuxthub\u002F1.overview","i-lucide-database",{"title":234,"path":235,"stem":236,"icon":237},"Retention","\u002Fnuxthub\u002Fretention","6.nuxthub\u002F2.retention","i-lucide-clock",{"id":239,"title":240,"body":241,"description":1686,"extension":1687,"links":1688,"meta":1696,"navigation":1697,"path":170,"seo":1698,"stem":171,"__hash__":1699},"docs\u002F4.adapters\u002F2.axiom.md","Axiom Adapter",{"type":242,"value":243,"toc":1664},"minimark",[244,254,336,340,343,380,383,388,406,410,439,443,885,888,891,894,929,933,1029,1042,1046,1053,1135,1139,1142,1199,1203,1339,1343,1346,1428,1432,1436,1444,1447,1451,1458,1462,1465,1479,1483,1486,1631,1635,1660],[245,246,247,253],"p",{},[248,249,169],"a",{"href":250,"rel":251},"https:\u002F\u002Faxiom.co",[252],"nofollow"," is a cloud-native logging platform with powerful querying capabilities. The evlog Axiom adapter sends your wide events directly to Axiom datasets.",[255,256,257],"code-collapse",{},[258,259,265],"pre",{"className":260,"code":261,"filename":262,"language":263,"meta":264,"style":264},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Add the Axiom drain adapter to send evlog wide events to Axiom.\n\n1. Identify which framework I'm using and follow its evlog integration pattern\n2. Install evlog if not already installed\n3. Import createAxiomDrain from 'evlog\u002Faxiom'\n4. Wire createAxiomDrain() into my framework's drain configuration\n5. Set AXIOM_TOKEN and AXIOM_DATASET environment variables in .env\n6. Test by triggering a request and checking the Axiom dataset\n\nAdapter docs: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\u002Faxiom\nFramework setup: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\n","Prompt","txt","",[266,267,268,276,283,289,295,301,307,313,319,324,330],"code",{"__ignoreMap":264},[269,270,273],"span",{"class":271,"line":272},"line",1,[269,274,275],{},"Add the Axiom drain adapter to send evlog wide events to Axiom.\n",[269,277,279],{"class":271,"line":278},2,[269,280,282],{"emptyLinePlaceholder":281},true,"\n",[269,284,286],{"class":271,"line":285},3,[269,287,288],{},"1. Identify which framework I'm using and follow its evlog integration pattern\n",[269,290,292],{"class":271,"line":291},4,[269,293,294],{},"2. Install evlog if not already installed\n",[269,296,298],{"class":271,"line":297},5,[269,299,300],{},"3. Import createAxiomDrain from 'evlog\u002Faxiom'\n",[269,302,304],{"class":271,"line":303},6,[269,305,306],{},"4. Wire createAxiomDrain() into my framework's drain configuration\n",[269,308,310],{"class":271,"line":309},7,[269,311,312],{},"5. Set AXIOM_TOKEN and AXIOM_DATASET environment variables in .env\n",[269,314,316],{"class":271,"line":315},8,[269,317,318],{},"6. Test by triggering a request and checking the Axiom dataset\n",[269,320,322],{"class":271,"line":321},9,[269,323,282],{"emptyLinePlaceholder":281},[269,325,327],{"class":271,"line":326},10,[269,328,329],{},"Adapter docs: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\u002Faxiom\n",[269,331,333],{"class":271,"line":332},11,[269,334,335],{},"Framework setup: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\n",[337,338,15],"h2",{"id":339},"installation",[245,341,342],{},"The Axiom adapter comes bundled with evlog:",[258,344,348],{"className":345,"code":346,"language":347,"meta":264,"style":264},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createAxiomDrain } from 'evlog\u002Faxiom'\n","typescript",[266,349,350],{"__ignoreMap":264},[269,351,352,356,360,364,367,370,373,377],{"class":271,"line":272},[269,353,355],{"class":354},"s7zQu","import",[269,357,359],{"class":358},"sMK4o"," {",[269,361,363],{"class":362},"sTEyZ"," createAxiomDrain",[269,365,366],{"class":358}," }",[269,368,369],{"class":354}," from",[269,371,372],{"class":358}," '",[269,374,376],{"class":375},"sfazB","evlog\u002Faxiom",[269,378,379],{"class":358},"'\n",[337,381,20],{"id":382},"quick-start",[384,385,387],"h3",{"id":386},"_1-get-your-axiom-credentials","1. Get your Axiom credentials",[389,390,391,400,403],"ol",{},[392,393,394,395],"li",{},"Create an ",[248,396,399],{"href":397,"rel":398},"https:\u002F\u002Fapp.axiom.co",[252],"Axiom account",[392,401,402],{},"Create a dataset for your logs",[392,404,405],{},"Generate an API token with ingest permissions",[384,407,409],{"id":408},"_2-set-environment-variables","2. Set environment variables",[258,411,416],{"className":412,"code":413,"filename":414,"language":415,"meta":264,"style":264},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","AXIOM_TOKEN=xaat-your-token-here\nAXIOM_DATASET=your-dataset-name\n",".env","bash",[266,417,418,429],{"__ignoreMap":264},[269,419,420,423,426],{"class":271,"line":272},[269,421,422],{"class":362},"AXIOM_TOKEN",[269,424,425],{"class":358},"=",[269,427,428],{"class":375},"xaat-your-token-here\n",[269,430,431,434,436],{"class":271,"line":278},[269,432,433],{"class":362},"AXIOM_DATASET",[269,435,425],{"class":358},[269,437,438],{"class":375},"your-dataset-name\n",[384,440,442],{"id":441},"_3-wire-the-drain-to-your-framework","3. Wire the drain to your framework",[444,445,446,554,617,671,730,784,837],"code-group",{},[258,447,450],{"className":345,"code":448,"filename":449,"language":347,"meta":264,"style":264},"\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",[266,451,452,458,476,480,511,546],{"__ignoreMap":264},[269,453,454],{"class":271,"line":272},[269,455,457],{"class":456},"sHwdD","\u002F\u002F server\u002Fplugins\u002Fevlog-drain.ts\n",[269,459,460,462,464,466,468,470,472,474],{"class":271,"line":278},[269,461,355],{"class":354},[269,463,359],{"class":358},[269,465,363],{"class":362},[269,467,366],{"class":358},[269,469,369],{"class":354},[269,471,372],{"class":358},[269,473,376],{"class":375},[269,475,379],{"class":358},[269,477,478],{"class":271,"line":285},[269,479,282],{"emptyLinePlaceholder":281},[269,481,482,485,488,492,495,497,501,504,508],{"class":271,"line":291},[269,483,484],{"class":354},"export",[269,486,487],{"class":354}," default",[269,489,491],{"class":490},"s2Zo4"," defineNitroPlugin",[269,493,494],{"class":362},"(",[269,496,494],{"class":358},[269,498,500],{"class":499},"sHdIc","nitroApp",[269,502,503],{"class":358},")",[269,505,507],{"class":506},"spNyl"," =>",[269,509,510],{"class":358}," {\n",[269,512,513,516,519,522,524,527,530,533,536,538,541,543],{"class":271,"line":297},[269,514,515],{"class":362},"  nitroApp",[269,517,518],{"class":358},".",[269,520,521],{"class":362},"hooks",[269,523,518],{"class":358},[269,525,526],{"class":490},"hook",[269,528,494],{"class":529},"swJcz",[269,531,532],{"class":358},"'",[269,534,535],{"class":375},"evlog:drain",[269,537,532],{"class":358},[269,539,540],{"class":358},",",[269,542,363],{"class":490},[269,544,545],{"class":529},"())\n",[269,547,548,551],{"class":271,"line":303},[269,549,550],{"class":358},"}",[269,552,553],{"class":362},")\n",[258,555,557],{"className":345,"code":556,"filename":76,"language":347,"meta":264,"style":264},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\napp.use(evlog({ drain: createAxiomDrain() }))\n",[266,558,559,577,581],{"__ignoreMap":264},[269,560,561,563,565,567,569,571,573,575],{"class":271,"line":272},[269,562,355],{"class":354},[269,564,359],{"class":358},[269,566,363],{"class":362},[269,568,366],{"class":358},[269,570,369],{"class":354},[269,572,372],{"class":358},[269,574,376],{"class":375},[269,576,379],{"class":358},[269,578,579],{"class":271,"line":278},[269,580,282],{"emptyLinePlaceholder":281},[269,582,583,586,588,591,593,596,598,601,604,607,609,612,614],{"class":271,"line":285},[269,584,585],{"class":362},"app",[269,587,518],{"class":358},[269,589,590],{"class":490},"use",[269,592,494],{"class":362},[269,594,595],{"class":490},"evlog",[269,597,494],{"class":362},[269,599,600],{"class":358},"{",[269,602,603],{"class":529}," drain",[269,605,606],{"class":358},":",[269,608,363],{"class":490},[269,610,611],{"class":362},"() ",[269,613,550],{"class":358},[269,615,616],{"class":362},"))\n",[258,618,619],{"className":345,"code":556,"filename":71,"language":347,"meta":264,"style":264},[266,620,621,639,643],{"__ignoreMap":264},[269,622,623,625,627,629,631,633,635,637],{"class":271,"line":272},[269,624,355],{"class":354},[269,626,359],{"class":358},[269,628,363],{"class":362},[269,630,366],{"class":358},[269,632,369],{"class":354},[269,634,372],{"class":358},[269,636,376],{"class":375},[269,638,379],{"class":358},[269,640,641],{"class":271,"line":278},[269,642,282],{"emptyLinePlaceholder":281},[269,644,645,647,649,651,653,655,657,659,661,663,665,667,669],{"class":271,"line":285},[269,646,585],{"class":362},[269,648,518],{"class":358},[269,650,590],{"class":490},[269,652,494],{"class":362},[269,654,595],{"class":490},[269,656,494],{"class":362},[269,658,600],{"class":358},[269,660,603],{"class":529},[269,662,606],{"class":358},[269,664,363],{"class":490},[269,666,611],{"class":362},[269,668,550],{"class":358},[269,670,616],{"class":362},[258,672,674],{"className":345,"code":673,"filename":81,"language":347,"meta":264,"style":264},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nawait app.register(evlog, { drain: createAxiomDrain() })\n",[266,675,676,694,698],{"__ignoreMap":264},[269,677,678,680,682,684,686,688,690,692],{"class":271,"line":272},[269,679,355],{"class":354},[269,681,359],{"class":358},[269,683,363],{"class":362},[269,685,366],{"class":358},[269,687,369],{"class":354},[269,689,372],{"class":358},[269,691,376],{"class":375},[269,693,379],{"class":358},[269,695,696],{"class":271,"line":278},[269,697,282],{"emptyLinePlaceholder":281},[269,699,700,703,706,708,711,714,716,718,720,722,724,726,728],{"class":271,"line":285},[269,701,702],{"class":354},"await",[269,704,705],{"class":362}," app",[269,707,518],{"class":358},[269,709,710],{"class":490},"register",[269,712,713],{"class":362},"(evlog",[269,715,540],{"class":358},[269,717,359],{"class":358},[269,719,603],{"class":529},[269,721,606],{"class":358},[269,723,363],{"class":490},[269,725,611],{"class":362},[269,727,550],{"class":358},[269,729,553],{"class":362},[258,731,732],{"className":345,"code":556,"filename":86,"language":347,"meta":264,"style":264},[266,733,734,752,756],{"__ignoreMap":264},[269,735,736,738,740,742,744,746,748,750],{"class":271,"line":272},[269,737,355],{"class":354},[269,739,359],{"class":358},[269,741,363],{"class":362},[269,743,366],{"class":358},[269,745,369],{"class":354},[269,747,372],{"class":358},[269,749,376],{"class":375},[269,751,379],{"class":358},[269,753,754],{"class":271,"line":278},[269,755,282],{"emptyLinePlaceholder":281},[269,757,758,760,762,764,766,768,770,772,774,776,778,780,782],{"class":271,"line":285},[269,759,585],{"class":362},[269,761,518],{"class":358},[269,763,590],{"class":490},[269,765,494],{"class":362},[269,767,595],{"class":490},[269,769,494],{"class":362},[269,771,600],{"class":358},[269,773,603],{"class":529},[269,775,606],{"class":358},[269,777,363],{"class":490},[269,779,611],{"class":362},[269,781,550],{"class":358},[269,783,616],{"class":362},[258,785,787],{"className":345,"code":786,"filename":66,"language":347,"meta":264,"style":264},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\nEvlogModule.forRoot({ drain: createAxiomDrain() })\n",[266,788,789,807,811],{"__ignoreMap":264},[269,790,791,793,795,797,799,801,803,805],{"class":271,"line":272},[269,792,355],{"class":354},[269,794,359],{"class":358},[269,796,363],{"class":362},[269,798,366],{"class":358},[269,800,369],{"class":354},[269,802,372],{"class":358},[269,804,376],{"class":375},[269,806,379],{"class":358},[269,808,809],{"class":271,"line":278},[269,810,282],{"emptyLinePlaceholder":281},[269,812,813,816,818,821,823,825,827,829,831,833,835],{"class":271,"line":285},[269,814,815],{"class":362},"EvlogModule",[269,817,518],{"class":358},[269,819,820],{"class":490},"forRoot",[269,822,494],{"class":362},[269,824,600],{"class":358},[269,826,603],{"class":529},[269,828,606],{"class":358},[269,830,363],{"class":490},[269,832,611],{"class":362},[269,834,550],{"class":358},[269,836,553],{"class":362},[258,838,840],{"className":345,"code":839,"filename":96,"language":347,"meta":264,"style":264},"import { createAxiomDrain } from 'evlog\u002Faxiom'\n\ninitLogger({ drain: createAxiomDrain() })\n",[266,841,842,860,864],{"__ignoreMap":264},[269,843,844,846,848,850,852,854,856,858],{"class":271,"line":272},[269,845,355],{"class":354},[269,847,359],{"class":358},[269,849,363],{"class":362},[269,851,366],{"class":358},[269,853,369],{"class":354},[269,855,372],{"class":358},[269,857,376],{"class":375},[269,859,379],{"class":358},[269,861,862],{"class":271,"line":278},[269,863,282],{"emptyLinePlaceholder":281},[269,865,866,869,871,873,875,877,879,881,883],{"class":271,"line":285},[269,867,868],{"class":490},"initLogger",[269,870,494],{"class":362},[269,872,600],{"class":358},[269,874,603],{"class":529},[269,876,606],{"class":358},[269,878,363],{"class":490},[269,880,611],{"class":362},[269,882,550],{"class":358},[269,884,553],{"class":362},[245,886,887],{},"That's it! Your logs will now appear in Axiom.",[337,889,150],{"id":890},"configuration",[245,892,893],{},"The adapter reads configuration from multiple sources (highest priority first):",[389,895,896,906,916],{},[392,897,898,902,903],{},[899,900,901],"strong",{},"Overrides"," passed to ",[266,904,905],{},"createAxiomDrain()",[392,907,908,911,912,915],{},[899,909,910],{},"Runtime config"," at ",[266,913,914],{},"runtimeConfig.axiom"," (Nuxt\u002FNitro only)",[392,917,918,921,922,925,926,503],{},[899,919,920],{},"Environment variables"," (",[266,923,924],{},"AXIOM_*"," or ",[266,927,928],{},"NUXT_AXIOM_*",[384,930,932],{"id":931},"environment-variables","Environment Variables",[934,935,936,952],"table",{},[937,938,939],"thead",{},[940,941,942,946,949],"tr",{},[943,944,945],"th",{},"Variable",[943,947,948],{},"Nuxt alias",[943,950,951],{},"Description",[953,954,955,970,984,999,1014],"tbody",{},[940,956,957,962,967],{},[958,959,960],"td",{},[266,961,422],{},[958,963,964],{},[266,965,966],{},"NUXT_AXIOM_TOKEN",[958,968,969],{},"API token with ingest permissions",[940,971,972,976,981],{},[958,973,974],{},[266,975,433],{},[958,977,978],{},[266,979,980],{},"NUXT_AXIOM_DATASET",[958,982,983],{},"Dataset name to ingest logs into",[940,985,986,991,996],{},[958,987,988],{},[266,989,990],{},"AXIOM_ORG_ID",[958,992,993],{},[266,994,995],{},"NUXT_AXIOM_ORG_ID",[958,997,998],{},"Organization ID (required for Personal Access Tokens)",[940,1000,1001,1006,1011],{},[958,1002,1003],{},[266,1004,1005],{},"AXIOM_EDGE_URL",[958,1007,1008],{},[266,1009,1010],{},"NUXT_AXIOM_EDGE_URL",[958,1012,1013],{},"Edge base URL for ingest\u002Fquery (for edge deployments)",[940,1015,1016,1021,1026],{},[958,1017,1018],{},[266,1019,1020],{},"AXIOM_URL",[958,1022,1023],{},[266,1024,1025],{},"NUXT_AXIOM_URL",[958,1027,1028],{},"API base URL (legacy\u002Fdefault ingest endpoint)",[1030,1031,1033,1034,1037,1038,1041],"callout",{"color":1032,"icon":13},"info","In Nuxt\u002FNitro, use the ",[266,1035,1036],{},"NUXT_"," prefix so values are available via ",[266,1039,1040],{},"useRuntimeConfig()",". In all other frameworks, use the unprefixed variables.",[384,1043,1045],{"id":1044},"runtime-config-nuxt-only","Runtime Config (Nuxt only)",[245,1047,1048,1049,1052],{},"Configure via ",[266,1050,1051],{},"nuxt.config.ts"," for type-safe configuration:",[258,1054,1056],{"className":345,"code":1055,"filename":1051,"language":347,"meta":264,"style":264},"export default defineNuxtConfig({\n  runtimeConfig: {\n    axiom: {\n      token: '', \u002F\u002F Set via NUXT_AXIOM_TOKEN\n      dataset: '', \u002F\u002F Set via NUXT_AXIOM_DATASET\n    },\n  },\n})\n",[266,1057,1058,1072,1081,1090,1105,1119,1124,1129],{"__ignoreMap":264},[269,1059,1060,1062,1064,1067,1069],{"class":271,"line":272},[269,1061,484],{"class":354},[269,1063,487],{"class":354},[269,1065,1066],{"class":490}," defineNuxtConfig",[269,1068,494],{"class":362},[269,1070,1071],{"class":358},"{\n",[269,1073,1074,1077,1079],{"class":271,"line":278},[269,1075,1076],{"class":529},"  runtimeConfig",[269,1078,606],{"class":358},[269,1080,510],{"class":358},[269,1082,1083,1086,1088],{"class":271,"line":285},[269,1084,1085],{"class":529},"    axiom",[269,1087,606],{"class":358},[269,1089,510],{"class":358},[269,1091,1092,1095,1097,1100,1102],{"class":271,"line":291},[269,1093,1094],{"class":529},"      token",[269,1096,606],{"class":358},[269,1098,1099],{"class":358}," ''",[269,1101,540],{"class":358},[269,1103,1104],{"class":456}," \u002F\u002F Set via NUXT_AXIOM_TOKEN\n",[269,1106,1107,1110,1112,1114,1116],{"class":271,"line":297},[269,1108,1109],{"class":529},"      dataset",[269,1111,606],{"class":358},[269,1113,1099],{"class":358},[269,1115,540],{"class":358},[269,1117,1118],{"class":456}," \u002F\u002F Set via NUXT_AXIOM_DATASET\n",[269,1120,1121],{"class":271,"line":303},[269,1122,1123],{"class":358},"    },\n",[269,1125,1126],{"class":271,"line":309},[269,1127,1128],{"class":358},"  },\n",[269,1130,1131,1133],{"class":271,"line":315},[269,1132,550],{"class":358},[269,1134,553],{"class":362},[384,1136,1138],{"id":1137},"override-options","Override Options",[245,1140,1141],{},"Pass options directly to override any configuration:",[258,1143,1145],{"className":345,"code":1144,"language":347,"meta":264,"style":264},"const drain = createAxiomDrain({\n  dataset: 'production-logs',\n  timeout: 10000,\n})\n",[266,1146,1147,1163,1180,1193],{"__ignoreMap":264},[269,1148,1149,1152,1155,1157,1159,1161],{"class":271,"line":272},[269,1150,1151],{"class":506},"const",[269,1153,1154],{"class":362}," drain ",[269,1156,425],{"class":358},[269,1158,363],{"class":490},[269,1160,494],{"class":362},[269,1162,1071],{"class":358},[269,1164,1165,1168,1170,1172,1175,1177],{"class":271,"line":278},[269,1166,1167],{"class":529},"  dataset",[269,1169,606],{"class":358},[269,1171,372],{"class":358},[269,1173,1174],{"class":375},"production-logs",[269,1176,532],{"class":358},[269,1178,1179],{"class":358},",\n",[269,1181,1182,1185,1187,1191],{"class":271,"line":285},[269,1183,1184],{"class":529},"  timeout",[269,1186,606],{"class":358},[269,1188,1190],{"class":1189},"sbssI"," 10000",[269,1192,1179],{"class":358},[269,1194,1195,1197],{"class":271,"line":291},[269,1196,550],{"class":358},[269,1198,553],{"class":362},[384,1200,1202],{"id":1201},"full-configuration-reference","Full Configuration Reference",[934,1204,1205,1220],{},[937,1206,1207],{},[940,1208,1209,1212,1215,1218],{},[943,1210,1211],{},"Option",[943,1213,1214],{},"Type",[943,1216,1217],{},"Default",[943,1219,951],{},[953,1221,1222,1240,1256,1272,1295,1319],{},[940,1223,1224,1229,1234,1237],{},[958,1225,1226],{},[266,1227,1228],{},"token",[958,1230,1231],{},[266,1232,1233],{},"string",[958,1235,1236],{},"-",[958,1238,1239],{},"API token (required)",[940,1241,1242,1247,1251,1253],{},[958,1243,1244],{},[266,1245,1246],{},"dataset",[958,1248,1249],{},[266,1250,1233],{},[958,1252,1236],{},[958,1254,1255],{},"Dataset name (required)",[940,1257,1258,1263,1267,1269],{},[958,1259,1260],{},[266,1261,1262],{},"orgId",[958,1264,1265],{},[266,1266,1233],{},[958,1268,1236],{},[958,1270,1271],{},"Organization ID (for PAT tokens)",[940,1273,1274,1279,1283,1285],{},[958,1275,1276],{},[266,1277,1278],{},"edgeUrl",[958,1280,1281],{},[266,1282,1233],{},[958,1284,1236],{},[958,1286,1287,1288,1291,1292],{},"Edge URL for ingest. Uses ",[266,1289,1290],{},"\u002Fv1\u002Fingest\u002F{dataset}"," when no path is provided; custom paths are used as-is (trailing slash trimmed). Mutually exclusive with ",[266,1293,1294],{},"baseUrl",[940,1296,1297,1301,1305,1310],{},[958,1298,1299],{},[266,1300,1294],{},[958,1302,1303],{},[266,1304,1233],{},[958,1306,1307],{},[266,1308,1309],{},"https:\u002F\u002Fapi.axiom.co",[958,1311,1312,1313,1316,1317],{},"API base URL (",[266,1314,1315],{},"\u002Fv1\u002Fdatasets\u002F{dataset}\u002Fingest","), mutually exclusive with ",[266,1318,1278],{},[940,1320,1321,1326,1331,1336],{},[958,1322,1323],{},[266,1324,1325],{},"timeout",[958,1327,1328],{},[266,1329,1330],{},"number",[958,1332,1333],{},[266,1334,1335],{},"5000",[958,1337,1338],{},"Request timeout in milliseconds",[337,1340,1342],{"id":1341},"querying-logs-in-axiom","Querying Logs in Axiom",[245,1344,1345],{},"evlog sends structured wide events that are perfect for Axiom's APL query language:",[258,1347,1351],{"className":1348,"code":1349,"language":1350,"meta":264,"style":264},"language-apl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Find slow requests\n['your-dataset']\n| where duration > 1000\n| project timestamp, path, duration, 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","apl",[266,1352,1353,1358,1363,1368,1373,1377,1382,1386,1391,1396,1401,1405,1411,1416,1422],{"__ignoreMap":264},[269,1354,1355],{"class":271,"line":272},[269,1356,1357],{},"\u002F\u002F Find slow requests\n",[269,1359,1360],{"class":271,"line":278},[269,1361,1362],{},"['your-dataset']\n",[269,1364,1365],{"class":271,"line":285},[269,1366,1367],{},"| where duration > 1000\n",[269,1369,1370],{"class":271,"line":291},[269,1371,1372],{},"| project timestamp, path, duration, status\n",[269,1374,1375],{"class":271,"line":297},[269,1376,282],{"emptyLinePlaceholder":281},[269,1378,1379],{"class":271,"line":303},[269,1380,1381],{},"\u002F\u002F Error rate by endpoint\n",[269,1383,1384],{"class":271,"line":309},[269,1385,1362],{},[269,1387,1388],{"class":271,"line":315},[269,1389,1390],{},"| where level == \"error\"\n",[269,1392,1393],{"class":271,"line":321},[269,1394,1395],{},"| summarize count() by path\n",[269,1397,1398],{"class":271,"line":326},[269,1399,1400],{},"| order by count_ desc\n",[269,1402,1403],{"class":271,"line":332},[269,1404,282],{"emptyLinePlaceholder":281},[269,1406,1408],{"class":271,"line":1407},12,[269,1409,1410],{},"\u002F\u002F Request volume over time\n",[269,1412,1414],{"class":271,"line":1413},13,[269,1415,1362],{},[269,1417,1419],{"class":271,"line":1418},14,[269,1420,1421],{},"| summarize count() by bin(timestamp, 1h)\n",[269,1423,1425],{"class":271,"line":1424},15,[269,1426,1427],{},"| render timechart\n",[337,1429,1431],{"id":1430},"troubleshooting","Troubleshooting",[384,1433,1435],{"id":1434},"missing-dataset-or-token-error","Missing dataset or token error",[258,1437,1442],{"className":1438,"code":1440,"language":1441},[1439],"language-text","[evlog\u002Faxiom] Missing dataset or token. Set AXIOM_DATASET and AXIOM_TOKEN\n","text",[266,1443,1440],{"__ignoreMap":264},[245,1445,1446],{},"Make sure your environment variables are set and the server was restarted after adding them.",[384,1448,1450],{"id":1449},"_401-unauthorized","401 Unauthorized",[245,1452,1453,1454,1457],{},"Your token may be invalid or expired. Generate a new token in the Axiom dashboard with ",[899,1455,1456],{},"Ingest"," permissions.",[384,1459,1461],{"id":1460},"_403-forbidden-with-pat-tokens","403 Forbidden with PAT tokens",[245,1463,1464],{},"Personal Access Tokens require an organization ID:",[258,1466,1468],{"className":412,"code":1467,"filename":414,"language":415,"meta":264,"style":264},"AXIOM_ORG_ID=your-org-id\n",[266,1469,1470],{"__ignoreMap":264},[269,1471,1472,1474,1476],{"class":271,"line":272},[269,1473,990],{"class":362},[269,1475,425],{"class":358},[269,1477,1478],{"class":375},"your-org-id\n",[337,1480,1482],{"id":1481},"direct-api-usage","Direct API Usage",[245,1484,1485],{},"For advanced use cases, you can use the lower-level functions:",[258,1487,1490],{"className":345,"code":1488,"filename":1489,"language":347,"meta":264,"style":264},"import { sendToAxiom, sendBatchToAxiom } from 'evlog\u002Faxiom'\n\n\u002F\u002F Send a single event\nawait sendToAxiom(event, {\n  token: 'xaat-xxx',\n  dataset: 'logs',\n})\n\n\u002F\u002F Send multiple events in one request\nawait sendBatchToAxiom(events, {\n  token: 'xaat-xxx',\n  dataset: 'logs',\n})\n","server\u002Futils\u002Faxiom.ts",[266,1491,1492,1516,1520,1525,1538,1554,1569,1575,1579,1584,1597,1611,1625],{"__ignoreMap":264},[269,1493,1494,1496,1498,1501,1503,1506,1508,1510,1512,1514],{"class":271,"line":272},[269,1495,355],{"class":354},[269,1497,359],{"class":358},[269,1499,1500],{"class":362}," sendToAxiom",[269,1502,540],{"class":358},[269,1504,1505],{"class":362}," sendBatchToAxiom",[269,1507,366],{"class":358},[269,1509,369],{"class":354},[269,1511,372],{"class":358},[269,1513,376],{"class":375},[269,1515,379],{"class":358},[269,1517,1518],{"class":271,"line":278},[269,1519,282],{"emptyLinePlaceholder":281},[269,1521,1522],{"class":271,"line":285},[269,1523,1524],{"class":456},"\u002F\u002F Send a single event\n",[269,1526,1527,1529,1531,1534,1536],{"class":271,"line":291},[269,1528,702],{"class":354},[269,1530,1500],{"class":490},[269,1532,1533],{"class":362},"(event",[269,1535,540],{"class":358},[269,1537,510],{"class":358},[269,1539,1540,1543,1545,1547,1550,1552],{"class":271,"line":297},[269,1541,1542],{"class":529},"  token",[269,1544,606],{"class":358},[269,1546,372],{"class":358},[269,1548,1549],{"class":375},"xaat-xxx",[269,1551,532],{"class":358},[269,1553,1179],{"class":358},[269,1555,1556,1558,1560,1562,1565,1567],{"class":271,"line":303},[269,1557,1167],{"class":529},[269,1559,606],{"class":358},[269,1561,372],{"class":358},[269,1563,1564],{"class":375},"logs",[269,1566,532],{"class":358},[269,1568,1179],{"class":358},[269,1570,1571,1573],{"class":271,"line":309},[269,1572,550],{"class":358},[269,1574,553],{"class":362},[269,1576,1577],{"class":271,"line":315},[269,1578,282],{"emptyLinePlaceholder":281},[269,1580,1581],{"class":271,"line":321},[269,1582,1583],{"class":456},"\u002F\u002F Send multiple events in one request\n",[269,1585,1586,1588,1590,1593,1595],{"class":271,"line":326},[269,1587,702],{"class":354},[269,1589,1505],{"class":490},[269,1591,1592],{"class":362},"(events",[269,1594,540],{"class":358},[269,1596,510],{"class":358},[269,1598,1599,1601,1603,1605,1607,1609],{"class":271,"line":332},[269,1600,1542],{"class":529},[269,1602,606],{"class":358},[269,1604,372],{"class":358},[269,1606,1549],{"class":375},[269,1608,532],{"class":358},[269,1610,1179],{"class":358},[269,1612,1613,1615,1617,1619,1621,1623],{"class":271,"line":1407},[269,1614,1167],{"class":529},[269,1616,606],{"class":358},[269,1618,372],{"class":358},[269,1620,1564],{"class":375},[269,1622,532],{"class":358},[269,1624,1179],{"class":358},[269,1626,1627,1629],{"class":271,"line":1413},[269,1628,550],{"class":358},[269,1630,553],{"class":362},[337,1632,1634],{"id":1633},"next-steps","Next Steps",[1636,1637,1638,1644,1650,1655],"ul",{},[392,1639,1640,1643],{},[248,1641,1642],{"href":175},"OTLP Adapter"," - Send logs via OpenTelemetry Protocol",[392,1645,1646,1649],{},[248,1647,1648],{"href":180},"PostHog Adapter"," - Send logs to PostHog",[392,1651,1652,1654],{},[248,1653,199],{"href":200}," - Build your own adapter",[392,1656,1657,1659],{},[248,1658,131],{"href":132}," - Security and production tips",[1661,1662,1663],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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":264,"searchDepth":278,"depth":278,"links":1665},[1666,1667,1672,1678,1679,1684,1685],{"id":339,"depth":278,"text":15},{"id":382,"depth":278,"text":20,"children":1668},[1669,1670,1671],{"id":386,"depth":285,"text":387},{"id":408,"depth":285,"text":409},{"id":441,"depth":285,"text":442},{"id":890,"depth":278,"text":150,"children":1673},[1674,1675,1676,1677],{"id":931,"depth":285,"text":932},{"id":1044,"depth":285,"text":1045},{"id":1137,"depth":285,"text":1138},{"id":1201,"depth":285,"text":1202},{"id":1341,"depth":278,"text":1342},{"id":1430,"depth":278,"text":1431,"children":1680},[1681,1682,1683],{"id":1434,"depth":285,"text":1435},{"id":1449,"depth":285,"text":1450},{"id":1460,"depth":285,"text":1461},{"id":1481,"depth":278,"text":1482},{"id":1633,"depth":278,"text":1634},"Send wide events to Axiom for powerful querying, dashboards, and alerting. Zero-config setup with environment variables and automatic batching.","md",[1689,1695],{"label":1690,"icon":1691,"to":397,"target":1692,"color":1693,"variant":1694},"Axiom Dashboard","i-lucide-external-link","_blank","neutral","subtle",{"label":1642,"icon":177,"to":175,"color":1693,"variant":1694},{},{"title":169,"icon":172},{"title":240,"description":1686},"6uGZ_cy6QFW8qf9ApFquA8F1QsnuLDJvvS_SChQH_1w",[1701,1703],{"title":164,"path":165,"stem":166,"description":1702,"icon":167,"children":-1},"Framework-agnostic browser log transport for sending client-side logs to your server via fetch or sendBeacon. Works with any frontend stack.",{"title":174,"path":175,"stem":176,"description":1704,"icon":177,"children":-1},"Send logs via OpenTelemetry Protocol (OTLP) to Grafana, Datadog, Honeycomb, and any compatible backend. Supports gRPC and HTTP transports.",1773504120943]