[{"data":1,"prerenderedAt":1294},["ShallowReactive",2],{"navigation_docs":3,"-adapters-overview":181,"-adapters-overview-surround":1289},[4,30,55,105,122,136],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","/getting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","/getting-started/introduction","1.getting-started/1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","/getting-started/quick-start","1.getting-started/3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","/getting-started/agent-skills","1.getting-started/4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Core Concepts","/core-concepts","2.core-concepts",[35,40,45,50],{"title":36,"path":37,"stem":38,"icon":39},"Wide Events","/core-concepts/wide-events","2.core-concepts/1.wide-events","i-lucide-layers",{"title":41,"path":42,"stem":43,"icon":44},"Structured Errors","/core-concepts/structured-errors","2.core-concepts/2.structured-errors","i-lucide-shield-alert",{"title":46,"path":47,"stem":48,"icon":49},"Best Practices","/core-concepts/best-practices","2.core-concepts/3.best-practices","i-lucide-shield-check",{"title":51,"path":52,"stem":53,"icon":54},"Typed Fields","/core-concepts/typed-fields","2.core-concepts/4.typed-fields","i-simple-icons-typescript",{"title":56,"path":57,"stem":58,"children":59,"page":29},"Adapters","/adapters","3.adapters",[60,65,70,75,80,85,90,95,100],{"title":61,"path":62,"stem":63,"icon":64},"Overview","/adapters/overview","3.adapters/1.overview","i-custom-plug",{"title":66,"path":67,"stem":68,"icon":69},"Axiom","/adapters/axiom","3.adapters/2.axiom","i-custom-axiom",{"title":71,"path":72,"stem":73,"icon":74},"OTLP","/adapters/otlp","3.adapters/3.otlp","i-simple-icons-opentelemetry",{"title":76,"path":77,"stem":78,"icon":79},"PostHog","/adapters/posthog","3.adapters/4.posthog","i-simple-icons-posthog",{"title":81,"path":82,"stem":83,"icon":84},"Sentry","/adapters/sentry","3.adapters/5.sentry","i-simple-icons-sentry",{"title":86,"path":87,"stem":88,"icon":89},"Better Stack","/adapters/better-stack","3.adapters/6.better-stack","i-simple-icons-betterstack",{"title":91,"path":92,"stem":93,"icon":94},"Custom Adapters","/adapters/custom","3.adapters/7.custom","i-lucide-code",{"title":96,"path":97,"stem":98,"icon":99},"Pipeline","/adapters/pipeline","3.adapters/8.pipeline","i-lucide-workflow",{"title":101,"path":102,"stem":103,"icon":104},"Browser","/adapters/browser","3.adapters/9.browser","i-lucide-globe",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Enrichers","/enrichers","4.enrichers",[110,113,118],{"title":61,"path":111,"stem":112,"icon":28},"/enrichers/overview","4.enrichers/1.overview",{"title":114,"path":115,"stem":116,"icon":117},"Built-in","/enrichers/built-in","4.enrichers/2.built-in","i-lucide-puzzle",{"title":119,"path":120,"stem":121,"icon":94},"Custom","/enrichers/custom","4.enrichers/3.custom",{"title":123,"path":124,"stem":125,"children":126,"page":29},"NuxtHub","/nuxthub","5.nuxthub",[127,131],{"title":61,"path":128,"stem":129,"icon":130},"/nuxthub/overview","5.nuxthub/1.overview","i-lucide-database",{"title":132,"path":133,"stem":134,"icon":135},"Retention","/nuxthub/retention","5.nuxthub/2.retention","i-lucide-clock",{"title":137,"path":138,"stem":139,"children":140,"page":29},"Examples","/examples","6.examples",[141,146,151,156,161,166,171,176],{"title":142,"path":143,"stem":144,"icon":145},"Next.js","/examples/nextjs","6.examples/1.nextjs","i-simple-icons-nextdotjs",{"title":147,"path":148,"stem":149,"icon":150},"SvelteKit","/examples/sveltekit","6.examples/2.sveltekit","i-simple-icons-svelte",{"title":152,"path":153,"stem":154,"icon":155},"TanStack Start","/examples/tanstack-start","6.examples/3.tanstack-start","i-custom-tanstack",{"title":157,"path":158,"stem":159,"icon":160},"NestJS","/examples/nestjs","6.examples/4.nestjs","i-simple-icons-nestjs",{"title":162,"path":163,"stem":164,"icon":165},"Express","/examples/express","6.examples/5.express","i-simple-icons-express",{"title":167,"path":168,"stem":169,"icon":170},"Hono","/examples/hono","6.examples/6.hono","i-simple-icons-hono",{"title":172,"path":173,"stem":174,"icon":175},"Fastify","/examples/fastify","6.examples/7.fastify","i-simple-icons-fastify",{"title":177,"path":178,"stem":179,"icon":180},"Elysia","/examples/elysia","6.examples/8.elysia","i-custom-elysia",{"id":182,"title":183,"body":184,"description":1276,"extension":1277,"links":1278,"meta":1285,"navigation":1286,"path":62,"seo":1287,"stem":63,"__hash__":1288},"docs/3.adapters/1.overview.md","Adapters Overview",{"type":185,"value":186,"toc":1268},"minimark",[187,191,196,209,335,348,352,380,384,395,755,768,772,775,960,964,970,1047,1064,1068,1071,1180,1264],[188,189,190],"p",{},"Adapters let you send logs to external observability platforms. evlog provides built-in adapters for popular services, and you can create custom adapters for any destination.",[192,193,195],"h2",{"id":194},"how-adapters-work","How Adapters Work",[188,197,198,199,203,204,208],{},"Adapters hook into the ",[200,201,202],"code",{},"evlog:drain"," event, which fires after each request completes. The drain runs in ",[205,206,207],"strong",{},"fire-and-forget"," mode, meaning it never blocks the HTTP response.",[210,211,217],"pre",{"className":212,"code":213,"filename":214,"language":215,"meta":216,"style":216},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createAxiomDrain } from 'evlog/axiom'\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', createAxiomDrain())\n})\n","server/plugins/evlog-drain.ts","typescript","",[200,218,219,252,259,291,326],{"__ignoreMap":216},[220,221,224,228,232,236,239,242,245,249],"span",{"class":222,"line":223},"line",1,[220,225,227],{"class":226},"s7zQu","import",[220,229,231],{"class":230},"sMK4o"," {",[220,233,235],{"class":234},"sTEyZ"," createAxiomDrain",[220,237,238],{"class":230}," }",[220,240,241],{"class":226}," from",[220,243,244],{"class":230}," '",[220,246,248],{"class":247},"sfazB","evlog/axiom",[220,250,251],{"class":230},"'\n",[220,253,255],{"class":222,"line":254},2,[220,256,258],{"emptyLinePlaceholder":257},true,"\n",[220,260,262,265,268,272,275,277,281,284,288],{"class":222,"line":261},3,[220,263,264],{"class":226},"export",[220,266,267],{"class":226}," default",[220,269,271],{"class":270},"s2Zo4"," defineNitroPlugin",[220,273,274],{"class":234},"(",[220,276,274],{"class":230},[220,278,280],{"class":279},"sHdIc","nitroApp",[220,282,283],{"class":230},")",[220,285,287],{"class":286},"spNyl"," =>",[220,289,290],{"class":230}," {\n",[220,292,294,297,300,303,305,308,311,314,316,318,321,323],{"class":222,"line":293},4,[220,295,296],{"class":234},"  nitroApp",[220,298,299],{"class":230},".",[220,301,302],{"class":234},"hooks",[220,304,299],{"class":230},[220,306,307],{"class":270},"hook",[220,309,274],{"class":310},"swJcz",[220,312,313],{"class":230},"'",[220,315,202],{"class":247},[220,317,313],{"class":230},[220,319,320],{"class":230},",",[220,322,235],{"class":270},[220,324,325],{"class":310},"())\n",[220,327,329,332],{"class":222,"line":328},5,[220,330,331],{"class":230},"}",[220,333,334],{"class":234},")\n",[336,337,340,343,344,347],"callout",{"color":338,"icon":339},"info","i-lucide-cloud",[205,341,342],{},"Serverless Support:"," On Cloudflare Workers and Vercel Edge, evlog automatically uses ",[200,345,346],{},"waitUntil()"," to ensure drains complete before the runtime terminates. No additional configuration needed.",[192,349,351],{"id":350},"available-adapters","Available Adapters",[353,354,355,359,362,365,368,371,374,377],"card-group",{},[356,357,358],"card",{"icon":69,"title":66,"to":67},"Send logs to Axiom for powerful querying and dashboards.",[356,360,361],{"icon":74,"title":71,"to":72},"OpenTelemetry Protocol for Grafana, Datadog, Honeycomb, and more.",[356,363,364],{"icon":79,"title":76,"to":77},"Send logs to PostHog Logs for structured logging and observability.",[356,366,367],{"icon":84,"title":81,"to":82},"Send structured logs to Sentry Logs for high-cardinality querying.",[356,369,370],{"icon":89,"title":86,"to":87},"Send logs to Better Stack for log management and alerting.",[356,372,373],{"icon":94,"title":119,"to":92},"Build your own adapter for any destination.",[356,375,376],{"icon":104,"title":101,"to":102},"Send browser logs to your server without framework coupling.",[356,378,379],{"icon":99,"title":96,"to":97},"Batch events, retry on failure, and handle buffer overflow.",[192,381,383],{"id":382},"standalone-usage-without-nitro","Standalone Usage (Without Nitro)",[188,385,386,387,390,391,394],{},"In plain TypeScript or Bun scripts, use the ",[200,388,389],{},"drain"," option in ",[200,392,393],{},"initLogger"," instead of Nitro hooks. Every emitted event is drained automatically.",[210,396,399],{"className":212,"code":397,"filename":398,"language":215,"meta":216,"style":216},"import type { DrainContext } from 'evlog'\nimport { initLogger, log, createRequestLogger } from 'evlog'\nimport { createAxiomDrain } from 'evlog/axiom'\nimport { createDrainPipeline } from 'evlog/pipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>()\nconst drain = pipeline(createAxiomDrain())\n\ninitLogger({\n  env: { service: 'my-script' },\n  drain,\n})\n\nlog.info({ action: 'job_started' }) // drained automatically\n\nconst reqLog = createRequestLogger({ method: 'POST', path: '/process' })\nreqLog.set({ processed: 42 })\nreqLog.emit() // drained automatically\n\nawait drain.flush()\n","index.ts",[200,400,401,424,453,471,491,495,522,542,547,557,583,592,599,604,640,645,691,719,734,739],{"__ignoreMap":216},[220,402,403,405,408,410,413,415,417,419,422],{"class":222,"line":223},[220,404,227],{"class":226},[220,406,407],{"class":226}," type",[220,409,231],{"class":230},[220,411,412],{"class":234}," DrainContext",[220,414,238],{"class":230},[220,416,241],{"class":226},[220,418,244],{"class":230},[220,420,421],{"class":247},"evlog",[220,423,251],{"class":230},[220,425,426,428,430,433,435,438,440,443,445,447,449,451],{"class":222,"line":254},[220,427,227],{"class":226},[220,429,231],{"class":230},[220,431,432],{"class":234}," initLogger",[220,434,320],{"class":230},[220,436,437],{"class":234}," log",[220,439,320],{"class":230},[220,441,442],{"class":234}," createRequestLogger",[220,444,238],{"class":230},[220,446,241],{"class":226},[220,448,244],{"class":230},[220,450,421],{"class":247},[220,452,251],{"class":230},[220,454,455,457,459,461,463,465,467,469],{"class":222,"line":261},[220,456,227],{"class":226},[220,458,231],{"class":230},[220,460,235],{"class":234},[220,462,238],{"class":230},[220,464,241],{"class":226},[220,466,244],{"class":230},[220,468,248],{"class":247},[220,470,251],{"class":230},[220,472,473,475,477,480,482,484,486,489],{"class":222,"line":293},[220,474,227],{"class":226},[220,476,231],{"class":230},[220,478,479],{"class":234}," createDrainPipeline",[220,481,238],{"class":230},[220,483,241],{"class":226},[220,485,244],{"class":230},[220,487,488],{"class":247},"evlog/pipeline",[220,490,251],{"class":230},[220,492,493],{"class":222,"line":328},[220,494,258],{"emptyLinePlaceholder":257},[220,496,498,501,504,507,509,512,516,519],{"class":222,"line":497},6,[220,499,500],{"class":286},"const",[220,502,503],{"class":234}," pipeline ",[220,505,506],{"class":230},"=",[220,508,479],{"class":270},[220,510,511],{"class":230},"\u003C",[220,513,515],{"class":514},"sBMFI","DrainContext",[220,517,518],{"class":230},">",[220,520,521],{"class":234},"()\n",[220,523,525,527,530,532,535,537,540],{"class":222,"line":524},7,[220,526,500],{"class":286},[220,528,529],{"class":234}," drain ",[220,531,506],{"class":230},[220,533,534],{"class":270}," pipeline",[220,536,274],{"class":234},[220,538,539],{"class":270},"createAxiomDrain",[220,541,325],{"class":234},[220,543,545],{"class":222,"line":544},8,[220,546,258],{"emptyLinePlaceholder":257},[220,548,550,552,554],{"class":222,"line":549},9,[220,551,393],{"class":270},[220,553,274],{"class":234},[220,555,556],{"class":230},"{\n",[220,558,560,563,566,568,571,573,575,578,580],{"class":222,"line":559},10,[220,561,562],{"class":310},"  env",[220,564,565],{"class":230},":",[220,567,231],{"class":230},[220,569,570],{"class":310}," service",[220,572,565],{"class":230},[220,574,244],{"class":230},[220,576,577],{"class":247},"my-script",[220,579,313],{"class":230},[220,581,582],{"class":230}," },\n",[220,584,586,589],{"class":222,"line":585},11,[220,587,588],{"class":234},"  drain",[220,590,591],{"class":230},",\n",[220,593,595,597],{"class":222,"line":594},12,[220,596,331],{"class":230},[220,598,334],{"class":234},[220,600,602],{"class":222,"line":601},13,[220,603,258],{"emptyLinePlaceholder":257},[220,605,607,610,612,614,616,619,622,624,626,629,631,633,636],{"class":222,"line":606},14,[220,608,609],{"class":234},"log",[220,611,299],{"class":230},[220,613,338],{"class":270},[220,615,274],{"class":234},[220,617,618],{"class":230},"{",[220,620,621],{"class":310}," action",[220,623,565],{"class":230},[220,625,244],{"class":230},[220,627,628],{"class":247},"job_started",[220,630,313],{"class":230},[220,632,238],{"class":230},[220,634,635],{"class":234},") ",[220,637,639],{"class":638},"sHwdD","// drained automatically\n",[220,641,643],{"class":222,"line":642},15,[220,644,258],{"emptyLinePlaceholder":257},[220,646,648,650,653,655,657,659,661,664,666,668,671,673,675,678,680,682,685,687,689],{"class":222,"line":647},16,[220,649,500],{"class":286},[220,651,652],{"class":234}," reqLog ",[220,654,506],{"class":230},[220,656,442],{"class":270},[220,658,274],{"class":234},[220,660,618],{"class":230},[220,662,663],{"class":310}," method",[220,665,565],{"class":230},[220,667,244],{"class":230},[220,669,670],{"class":247},"POST",[220,672,313],{"class":230},[220,674,320],{"class":230},[220,676,677],{"class":310}," path",[220,679,565],{"class":230},[220,681,244],{"class":230},[220,683,684],{"class":247},"/process",[220,686,313],{"class":230},[220,688,238],{"class":230},[220,690,334],{"class":234},[220,692,694,697,699,702,704,706,709,711,715,717],{"class":222,"line":693},17,[220,695,696],{"class":234},"reqLog",[220,698,299],{"class":230},[220,700,701],{"class":270},"set",[220,703,274],{"class":234},[220,705,618],{"class":230},[220,707,708],{"class":310}," processed",[220,710,565],{"class":230},[220,712,714],{"class":713},"sbssI"," 42",[220,716,238],{"class":230},[220,718,334],{"class":234},[220,720,722,724,726,729,732],{"class":222,"line":721},18,[220,723,696],{"class":234},[220,725,299],{"class":230},[220,727,728],{"class":270},"emit",[220,730,731],{"class":234},"() ",[220,733,639],{"class":638},[220,735,737],{"class":222,"line":736},19,[220,738,258],{"emptyLinePlaceholder":257},[220,740,742,745,748,750,753],{"class":222,"line":741},20,[220,743,744],{"class":226},"await",[220,746,747],{"class":234}," drain",[220,749,299],{"class":230},[220,751,752],{"class":270},"flush",[220,754,521],{"class":234},[336,756,759,760,767],{"color":757,"icon":758},"neutral","i-lucide-arrow-right","See the full ",[761,762,766],"a",{"href":763,"rel":764},"https://github.com/HugoRCD/evlog/tree/main/examples/bun-script",[765],"nofollow","bun-script example"," for a realistic batch processing script.",[192,769,771],{"id":770},"multiple-destinations","Multiple Destinations",[188,773,774],{},"Send logs to multiple services simultaneously:",[210,776,778],{"className":212,"code":777,"filename":214,"language":215,"meta":216,"style":216},"import { createAxiomDrain } from 'evlog/axiom'\nimport { createOTLPDrain } from 'evlog/otlp'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const axiom = createAxiomDrain()\n  const otlp = createOTLPDrain()\n\n  nitroApp.hooks.hook('evlog:drain', async (ctx) => {\n    await Promise.allSettled([axiom(ctx), otlp(ctx)])\n  })\n})\n",[200,779,780,798,818,822,842,857,870,874,911,947,954],{"__ignoreMap":216},[220,781,782,784,786,788,790,792,794,796],{"class":222,"line":223},[220,783,227],{"class":226},[220,785,231],{"class":230},[220,787,235],{"class":234},[220,789,238],{"class":230},[220,791,241],{"class":226},[220,793,244],{"class":230},[220,795,248],{"class":247},[220,797,251],{"class":230},[220,799,800,802,804,807,809,811,813,816],{"class":222,"line":254},[220,801,227],{"class":226},[220,803,231],{"class":230},[220,805,806],{"class":234}," createOTLPDrain",[220,808,238],{"class":230},[220,810,241],{"class":226},[220,812,244],{"class":230},[220,814,815],{"class":247},"evlog/otlp",[220,817,251],{"class":230},[220,819,820],{"class":222,"line":261},[220,821,258],{"emptyLinePlaceholder":257},[220,823,824,826,828,830,832,834,836,838,840],{"class":222,"line":293},[220,825,264],{"class":226},[220,827,267],{"class":226},[220,829,271],{"class":270},[220,831,274],{"class":234},[220,833,274],{"class":230},[220,835,280],{"class":279},[220,837,283],{"class":230},[220,839,287],{"class":286},[220,841,290],{"class":230},[220,843,844,847,850,853,855],{"class":222,"line":328},[220,845,846],{"class":286},"  const",[220,848,849],{"class":234}," axiom",[220,851,852],{"class":230}," =",[220,854,235],{"class":270},[220,856,521],{"class":310},[220,858,859,861,864,866,868],{"class":222,"line":497},[220,860,846],{"class":286},[220,862,863],{"class":234}," otlp",[220,865,852],{"class":230},[220,867,806],{"class":270},[220,869,521],{"class":310},[220,871,872],{"class":222,"line":524},[220,873,258],{"emptyLinePlaceholder":257},[220,875,876,878,880,882,884,886,888,890,892,894,896,899,902,905,907,909],{"class":222,"line":544},[220,877,296],{"class":234},[220,879,299],{"class":230},[220,881,302],{"class":234},[220,883,299],{"class":230},[220,885,307],{"class":270},[220,887,274],{"class":310},[220,889,313],{"class":230},[220,891,202],{"class":247},[220,893,313],{"class":230},[220,895,320],{"class":230},[220,897,898],{"class":286}," async",[220,900,901],{"class":230}," (",[220,903,904],{"class":279},"ctx",[220,906,283],{"class":230},[220,908,287],{"class":286},[220,910,290],{"class":230},[220,912,913,916,919,921,924,927,930,932,934,936,938,940,942,944],{"class":222,"line":549},[220,914,915],{"class":226},"    await",[220,917,918],{"class":514}," Promise",[220,920,299],{"class":230},[220,922,923],{"class":270},"allSettled",[220,925,926],{"class":310},"([",[220,928,929],{"class":270},"axiom",[220,931,274],{"class":310},[220,933,904],{"class":234},[220,935,283],{"class":310},[220,937,320],{"class":230},[220,939,863],{"class":270},[220,941,274],{"class":310},[220,943,904],{"class":234},[220,945,946],{"class":310},")])\n",[220,948,949,952],{"class":222,"line":559},[220,950,951],{"class":230},"  }",[220,953,334],{"class":310},[220,955,956,958],{"class":222,"line":585},[220,957,331],{"class":230},[220,959,334],{"class":234},[192,961,963],{"id":962},"drain-context","Drain Context",[188,965,966,967,969],{},"Every adapter receives a ",[200,968,515],{}," with:",[971,972,973,989],"table",{},[974,975,976],"thead",{},[977,978,979,983,986],"tr",{},[980,981,982],"th",{},"Field",[980,984,985],{},"Type",[980,987,988],{},"Description",[990,991,992,1008,1033],"tbody",{},[977,993,994,1000,1005],{},[995,996,997],"td",{},[200,998,999],{},"event",[995,1001,1002],{},[200,1003,1004],{},"WideEvent",[995,1006,1007],{},"The complete log event with all accumulated context",[977,1009,1010,1015,1020],{},[995,1011,1012],{},[200,1013,1014],{},"request",[995,1016,1017],{},[200,1018,1019],{},"object",[995,1021,1022,1023,1026,1027,1026,1030,283],{},"Request metadata (",[200,1024,1025],{},"method",", ",[200,1028,1029],{},"path",[200,1031,1032],{},"requestId",[977,1034,1035,1040,1044],{},[995,1036,1037],{},[200,1038,1039],{},"headers",[995,1041,1042],{},[200,1043,1019],{},[995,1045,1046],{},"Safe HTTP headers (sensitive headers are filtered)",[336,1048,1050,1053,1054,1026,1057,1026,1060,1063],{"color":1049,"icon":49},"success",[205,1051,1052],{},"Security:"," Sensitive headers (",[200,1055,1056],{},"authorization",[200,1058,1059],{},"cookie",[200,1061,1062],{},"x-api-key",", etc.) are automatically filtered and never passed to adapters.",[192,1065,1067],{"id":1066},"zero-config-setup","Zero-Config Setup",[188,1069,1070],{},"All adapters support automatic configuration via environment variables. No code changes needed when deploying to different environments:",[210,1072,1077],{"className":1073,"code":1074,"filename":1075,"language":1076,"meta":216,"style":216},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Axiom\nNUXT_AXIOM_TOKEN=xaat-xxx\nNUXT_AXIOM_DATASET=my-logs\n\n# OTLP\nNUXT_OTLP_ENDPOINT=https://otlp.example.com\n\n# PostHog\nNUXT_POSTHOG_API_KEY=phc_xxx\n\n# Sentry\nNUXT_SENTRY_DSN=https://key@o0.ingest.sentry.io/123\n\n# Better Stack\nNUXT_BETTER_STACK_SOURCE_TOKEN=your-source-token\n",".env","bash",[200,1078,1079,1084,1094,1104,1108,1113,1123,1127,1132,1142,1146,1151,1161,1165,1170],{"__ignoreMap":216},[220,1080,1081],{"class":222,"line":223},[220,1082,1083],{"class":638},"# Axiom\n",[220,1085,1086,1089,1091],{"class":222,"line":254},[220,1087,1088],{"class":234},"NUXT_AXIOM_TOKEN",[220,1090,506],{"class":230},[220,1092,1093],{"class":247},"xaat-xxx\n",[220,1095,1096,1099,1101],{"class":222,"line":261},[220,1097,1098],{"class":234},"NUXT_AXIOM_DATASET",[220,1100,506],{"class":230},[220,1102,1103],{"class":247},"my-logs\n",[220,1105,1106],{"class":222,"line":293},[220,1107,258],{"emptyLinePlaceholder":257},[220,1109,1110],{"class":222,"line":328},[220,1111,1112],{"class":638},"# OTLP\n",[220,1114,1115,1118,1120],{"class":222,"line":497},[220,1116,1117],{"class":234},"NUXT_OTLP_ENDPOINT",[220,1119,506],{"class":230},[220,1121,1122],{"class":247},"https://otlp.example.com\n",[220,1124,1125],{"class":222,"line":524},[220,1126,258],{"emptyLinePlaceholder":257},[220,1128,1129],{"class":222,"line":544},[220,1130,1131],{"class":638},"# PostHog\n",[220,1133,1134,1137,1139],{"class":222,"line":549},[220,1135,1136],{"class":234},"NUXT_POSTHOG_API_KEY",[220,1138,506],{"class":230},[220,1140,1141],{"class":247},"phc_xxx\n",[220,1143,1144],{"class":222,"line":559},[220,1145,258],{"emptyLinePlaceholder":257},[220,1147,1148],{"class":222,"line":585},[220,1149,1150],{"class":638},"# Sentry\n",[220,1152,1153,1156,1158],{"class":222,"line":594},[220,1154,1155],{"class":234},"NUXT_SENTRY_DSN",[220,1157,506],{"class":230},[220,1159,1160],{"class":247},"https://key@o0.ingest.sentry.io/123\n",[220,1162,1163],{"class":222,"line":601},[220,1164,258],{"emptyLinePlaceholder":257},[220,1166,1167],{"class":222,"line":606},[220,1168,1169],{"class":638},"# Better Stack\n",[220,1171,1172,1175,1177],{"class":222,"line":642},[220,1173,1174],{"class":234},"NUXT_BETTER_STACK_SOURCE_TOKEN",[220,1176,506],{"class":230},[220,1178,1179],{"class":247},"your-source-token\n",[210,1181,1183],{"className":212,"code":1182,"filename":214,"language":215,"meta":216,"style":216},"import { createAxiomDrain } from 'evlog/axiom'\n\nexport default defineNitroPlugin((nitroApp) => {\n  // Automatically reads from env vars\n  nitroApp.hooks.hook('evlog:drain', createAxiomDrain())\n})\n",[200,1184,1185,1203,1207,1227,1232,1258],{"__ignoreMap":216},[220,1186,1187,1189,1191,1193,1195,1197,1199,1201],{"class":222,"line":223},[220,1188,227],{"class":226},[220,1190,231],{"class":230},[220,1192,235],{"class":234},[220,1194,238],{"class":230},[220,1196,241],{"class":226},[220,1198,244],{"class":230},[220,1200,248],{"class":247},[220,1202,251],{"class":230},[220,1204,1205],{"class":222,"line":254},[220,1206,258],{"emptyLinePlaceholder":257},[220,1208,1209,1211,1213,1215,1217,1219,1221,1223,1225],{"class":222,"line":261},[220,1210,264],{"class":226},[220,1212,267],{"class":226},[220,1214,271],{"class":270},[220,1216,274],{"class":234},[220,1218,274],{"class":230},[220,1220,280],{"class":279},[220,1222,283],{"class":230},[220,1224,287],{"class":286},[220,1226,290],{"class":230},[220,1228,1229],{"class":222,"line":293},[220,1230,1231],{"class":638},"  // Automatically reads from env vars\n",[220,1233,1234,1236,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256],{"class":222,"line":328},[220,1235,296],{"class":234},[220,1237,299],{"class":230},[220,1239,302],{"class":234},[220,1241,299],{"class":230},[220,1243,307],{"class":270},[220,1245,274],{"class":310},[220,1247,313],{"class":230},[220,1249,202],{"class":247},[220,1251,313],{"class":230},[220,1253,320],{"class":230},[220,1255,235],{"class":270},[220,1257,325],{"class":310},[220,1259,1260,1262],{"class":222,"line":497},[220,1261,331],{"class":230},[220,1263,334],{"class":234},[1265,1266,1267],"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 .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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":216,"searchDepth":254,"depth":254,"links":1269},[1270,1271,1272,1273,1274,1275],{"id":194,"depth":254,"text":195},{"id":350,"depth":254,"text":351},{"id":382,"depth":254,"text":383},{"id":770,"depth":254,"text":771},{"id":962,"depth":254,"text":963},{"id":1066,"depth":254,"text":1067},"Send your logs to external services with evlog adapters. Built-in support for popular observability platforms and custom destinations.","md",[1279,1281,1282,1283,1284],{"label":66,"icon":69,"to":67,"color":757,"variant":1280},"subtle",{"label":71,"icon":74,"to":72,"color":757,"variant":1280},{"label":76,"icon":79,"to":77,"color":757,"variant":1280},{"label":81,"icon":84,"to":82,"color":757,"variant":1280},{"label":86,"icon":89,"to":87,"color":757,"variant":1280},{},{"title":61,"icon":64},{"title":183,"description":1276},"kAeXwZDQSlQfPmHSx_a0ez4mEvcnA_bhqqMNYewBGMk",[1290,1292],{"title":51,"path":52,"stem":53,"description":1291,"icon":54,"children":-1},"Add compile-time type safety to your wide events with TypeScript module augmentation. Prevent typos and ensure consistent field names across your codebase.",{"title":66,"path":67,"stem":68,"description":1293,"icon":69,"children":-1},"Send wide events to Axiom for powerful querying, dashboards, and alerting. Zero-config setup with environment variables and automatic batching.",1772900816055]