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