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