[{"data":1,"prerenderedAt":3170},["ShallowReactive",2],{"navigation_docs":3,"-adapters-custom":171,"-adapters-custom-surround":3165},[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],{"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",{"title":167,"path":168,"stem":169,"icon":170},"Fastify","/examples/fastify","6.examples/6.fastify","i-simple-icons-fastify",{"id":172,"title":91,"body":173,"description":3154,"extension":3155,"links":3156,"meta":3161,"navigation":3162,"path":92,"seo":3163,"stem":93,"__hash__":3164},"docs/3.adapters/7.custom.md",{"type":174,"value":175,"toc":3143},"minimark",[176,185,190,436,440,724,728,731,1338,1466,1470,1473,1828,1832,1835,2039,2043,2046,2433,2437,2445,2758,2767,2771,2804,3109,3113,3139],[177,178,179,180,184],"p",{},"You can create custom adapters to send logs to any service or destination. An adapter is simply a function that receives a ",[181,182,183],"code",{},"DrainContext"," and sends the data somewhere.",[186,187,189],"h2",{"id":188},"basic-structure","Basic Structure",[191,192,198],"pre",{"className":193,"code":194,"filename":195,"language":196,"meta":197,"style":197},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', async (ctx) => {\n    // ctx.event contains the full wide event\n    // ctx.request contains request metadata\n    // ctx.headers contains safe HTTP headers\n\n    await fetch('https://your-service.com/logs', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify(ctx.event),\n    })\n  })\n})\n","server/plugins/evlog-drain.ts","typescript","",[181,199,200,237,284,291,297,303,310,332,352,382,411,420,428],{"__ignoreMap":197},[201,202,205,209,212,216,220,223,227,230,234],"span",{"class":203,"line":204},"line",1,[201,206,208],{"class":207},"s7zQu","export",[201,210,211],{"class":207}," default",[201,213,215],{"class":214},"s2Zo4"," defineNitroPlugin",[201,217,219],{"class":218},"sTEyZ","(",[201,221,219],{"class":222},"sMK4o",[201,224,226],{"class":225},"sHdIc","nitroApp",[201,228,229],{"class":222},")",[201,231,233],{"class":232},"spNyl"," =>",[201,235,236],{"class":222}," {\n",[201,238,240,243,246,249,251,254,257,260,264,266,269,272,275,278,280,282],{"class":203,"line":239},2,[201,241,242],{"class":218},"  nitroApp",[201,244,245],{"class":222},".",[201,247,248],{"class":218},"hooks",[201,250,245],{"class":222},[201,252,253],{"class":214},"hook",[201,255,219],{"class":256},"swJcz",[201,258,259],{"class":222},"'",[201,261,263],{"class":262},"sfazB","evlog:drain",[201,265,259],{"class":222},[201,267,268],{"class":222},",",[201,270,271],{"class":232}," async",[201,273,274],{"class":222}," (",[201,276,277],{"class":225},"ctx",[201,279,229],{"class":222},[201,281,233],{"class":232},[201,283,236],{"class":222},[201,285,287],{"class":203,"line":286},3,[201,288,290],{"class":289},"sHwdD","    // ctx.event contains the full wide event\n",[201,292,294],{"class":203,"line":293},4,[201,295,296],{"class":289},"    // ctx.request contains request metadata\n",[201,298,300],{"class":203,"line":299},5,[201,301,302],{"class":289},"    // ctx.headers contains safe HTTP headers\n",[201,304,306],{"class":203,"line":305},6,[201,307,309],{"emptyLinePlaceholder":308},true,"\n",[201,311,313,316,319,321,323,326,328,330],{"class":203,"line":312},7,[201,314,315],{"class":207},"    await",[201,317,318],{"class":214}," fetch",[201,320,219],{"class":256},[201,322,259],{"class":222},[201,324,325],{"class":262},"https://your-service.com/logs",[201,327,259],{"class":222},[201,329,268],{"class":222},[201,331,236],{"class":222},[201,333,335,338,341,344,347,349],{"class":203,"line":334},8,[201,336,337],{"class":256},"      method",[201,339,340],{"class":222},":",[201,342,343],{"class":222}," '",[201,345,346],{"class":262},"POST",[201,348,259],{"class":222},[201,350,351],{"class":222},",\n",[201,353,355,358,360,363,365,368,370,372,374,377,379],{"class":203,"line":354},9,[201,356,357],{"class":256},"      headers",[201,359,340],{"class":222},[201,361,362],{"class":222}," {",[201,364,343],{"class":222},[201,366,367],{"class":256},"Content-Type",[201,369,259],{"class":222},[201,371,340],{"class":222},[201,373,343],{"class":222},[201,375,376],{"class":262},"application/json",[201,378,259],{"class":222},[201,380,381],{"class":222}," },\n",[201,383,385,388,390,393,395,398,400,402,404,407,409],{"class":203,"line":384},10,[201,386,387],{"class":256},"      body",[201,389,340],{"class":222},[201,391,392],{"class":218}," JSON",[201,394,245],{"class":222},[201,396,397],{"class":214},"stringify",[201,399,219],{"class":256},[201,401,277],{"class":218},[201,403,245],{"class":222},[201,405,406],{"class":218},"event",[201,408,229],{"class":256},[201,410,351],{"class":222},[201,412,414,417],{"class":203,"line":413},11,[201,415,416],{"class":222},"    }",[201,418,419],{"class":256},")\n",[201,421,423,426],{"class":203,"line":422},12,[201,424,425],{"class":222},"  }",[201,427,419],{"class":256},[201,429,431,434],{"class":203,"line":430},13,[201,432,433],{"class":222},"}",[201,435,419],{"class":218},[186,437,439],{"id":438},"draincontext-reference","DrainContext Reference",[191,441,444],{"className":193,"code":442,"filename":443,"language":196,"meta":197,"style":197},"interface DrainContext {\n  /** The complete wide event with all accumulated context */\n  event: WideEvent\n\n  /** Request metadata */\n  request?: {\n    method: string\n    path: string\n    requestId: string\n  }\n\n  /** Safe HTTP headers (sensitive headers filtered) */\n  headers?: Record\u003Cstring, string>\n}\n\ninterface WideEvent {\n  timestamp: string\n  level: 'debug' | 'info' | 'warn' | 'error'\n  service: string\n  environment?: string\n  version?: string\n  region?: string\n  commitHash?: string\n  requestId?: string\n  // ... plus all fields added via log.set()\n  [key: string]: unknown\n}\n","types.ts",[181,445,446,457,462,472,476,481,491,501,510,519,524,528,533,557,563,568,578,588,632,642,652,662,672,682,692,698,719],{"__ignoreMap":197},[201,447,448,451,455],{"class":203,"line":204},[201,449,450],{"class":232},"interface",[201,452,454],{"class":453},"sBMFI"," DrainContext",[201,456,236],{"class":222},[201,458,459],{"class":203,"line":239},[201,460,461],{"class":289},"  /** The complete wide event with all accumulated context */\n",[201,463,464,467,469],{"class":203,"line":286},[201,465,466],{"class":256},"  event",[201,468,340],{"class":222},[201,470,471],{"class":453}," WideEvent\n",[201,473,474],{"class":203,"line":293},[201,475,309],{"emptyLinePlaceholder":308},[201,477,478],{"class":203,"line":299},[201,479,480],{"class":289},"  /** Request metadata */\n",[201,482,483,486,489],{"class":203,"line":305},[201,484,485],{"class":256},"  request",[201,487,488],{"class":222},"?:",[201,490,236],{"class":222},[201,492,493,496,498],{"class":203,"line":312},[201,494,495],{"class":256},"    method",[201,497,340],{"class":222},[201,499,500],{"class":453}," string\n",[201,502,503,506,508],{"class":203,"line":334},[201,504,505],{"class":256},"    path",[201,507,340],{"class":222},[201,509,500],{"class":453},[201,511,512,515,517],{"class":203,"line":354},[201,513,514],{"class":256},"    requestId",[201,516,340],{"class":222},[201,518,500],{"class":453},[201,520,521],{"class":203,"line":384},[201,522,523],{"class":222},"  }\n",[201,525,526],{"class":203,"line":413},[201,527,309],{"emptyLinePlaceholder":308},[201,529,530],{"class":203,"line":422},[201,531,532],{"class":289},"  /** Safe HTTP headers (sensitive headers filtered) */\n",[201,534,535,538,540,543,546,549,551,554],{"class":203,"line":430},[201,536,537],{"class":256},"  headers",[201,539,488],{"class":222},[201,541,542],{"class":453}," Record",[201,544,545],{"class":222},"\u003C",[201,547,548],{"class":453},"string",[201,550,268],{"class":222},[201,552,553],{"class":453}," string",[201,555,556],{"class":222},">\n",[201,558,560],{"class":203,"line":559},14,[201,561,562],{"class":222},"}\n",[201,564,566],{"class":203,"line":565},15,[201,567,309],{"emptyLinePlaceholder":308},[201,569,571,573,576],{"class":203,"line":570},16,[201,572,450],{"class":232},[201,574,575],{"class":453}," WideEvent",[201,577,236],{"class":222},[201,579,581,584,586],{"class":203,"line":580},17,[201,582,583],{"class":256},"  timestamp",[201,585,340],{"class":222},[201,587,500],{"class":453},[201,589,591,594,596,598,601,603,606,608,611,613,615,617,620,622,624,626,629],{"class":203,"line":590},18,[201,592,593],{"class":256},"  level",[201,595,340],{"class":222},[201,597,343],{"class":222},[201,599,600],{"class":262},"debug",[201,602,259],{"class":222},[201,604,605],{"class":222}," |",[201,607,343],{"class":222},[201,609,610],{"class":262},"info",[201,612,259],{"class":222},[201,614,605],{"class":222},[201,616,343],{"class":222},[201,618,619],{"class":262},"warn",[201,621,259],{"class":222},[201,623,605],{"class":222},[201,625,343],{"class":222},[201,627,628],{"class":262},"error",[201,630,631],{"class":222},"'\n",[201,633,635,638,640],{"class":203,"line":634},19,[201,636,637],{"class":256},"  service",[201,639,340],{"class":222},[201,641,500],{"class":453},[201,643,645,648,650],{"class":203,"line":644},20,[201,646,647],{"class":256},"  environment",[201,649,488],{"class":222},[201,651,500],{"class":453},[201,653,655,658,660],{"class":203,"line":654},21,[201,656,657],{"class":256},"  version",[201,659,488],{"class":222},[201,661,500],{"class":453},[201,663,665,668,670],{"class":203,"line":664},22,[201,666,667],{"class":256},"  region",[201,669,488],{"class":222},[201,671,500],{"class":453},[201,673,675,678,680],{"class":203,"line":674},23,[201,676,677],{"class":256},"  commitHash",[201,679,488],{"class":222},[201,681,500],{"class":453},[201,683,685,688,690],{"class":203,"line":684},24,[201,686,687],{"class":256},"  requestId",[201,689,488],{"class":222},[201,691,500],{"class":453},[201,693,695],{"class":203,"line":694},25,[201,696,697],{"class":289},"  // ... plus all fields added via log.set()\n",[201,699,701,704,707,709,711,714,716],{"class":203,"line":700},26,[201,702,703],{"class":218},"  [",[201,705,706],{"class":225},"key",[201,708,340],{"class":222},[201,710,553],{"class":453},[201,712,713],{"class":218},"]",[201,715,340],{"class":222},[201,717,718],{"class":453}," unknown\n",[201,720,722],{"class":203,"line":721},27,[201,723,562],{"class":222},[186,725,727],{"id":726},"factory-pattern","Factory Pattern",[177,729,730],{},"For reusable adapters, use the factory pattern:",[191,732,735],{"className":193,"code":733,"filename":734,"language":196,"meta":197,"style":197},"import type { DrainContext } from 'evlog'\n\nexport interface MyAdapterConfig {\n  apiKey: string\n  endpoint?: string\n  timeout?: number\n}\n\nexport function createMyAdapter(config: MyAdapterConfig) {\n  const endpoint = config.endpoint ?? 'https://api.myservice.com/ingest'\n  const timeout = config.timeout ?? 5000\n\n  return async (ctx: DrainContext) => {\n    const controller = new AbortController()\n    const timeoutId = setTimeout(() => controller.abort(), timeout)\n\n    try {\n      const response = await fetch(endpoint, {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          'X-API-Key': config.apiKey,\n        },\n        body: JSON.stringify(ctx.event),\n        signal: controller.signal,\n      })\n\n      if (!response.ok) {\n        console.error(`[my-adapter] Failed: ${response.status}`)\n      }\n    } catch (error) {\n      if (error instanceof Error && error.name === 'AbortError') {\n        console.error('[my-adapter] Request timed out')\n      } else {\n        console.error('[my-adapter] Error:', error)\n      }\n    } finally {\n      clearTimeout(timeoutId)\n    }\n  }\n}\n","lib/my-adapter.ts",[181,736,737,762,766,778,787,796,806,810,814,837,866,888,892,913,932,966,970,977,1000,1015,1024,1043,1063,1068,1093,1109,1116,1120,1145,1178,1184,1200,1240,1260,1270,1294,1299,1309,1322,1328,1333],{"__ignoreMap":197},[201,738,739,742,745,747,749,752,755,757,760],{"class":203,"line":204},[201,740,741],{"class":207},"import",[201,743,744],{"class":207}," type",[201,746,362],{"class":222},[201,748,454],{"class":218},[201,750,751],{"class":222}," }",[201,753,754],{"class":207}," from",[201,756,343],{"class":222},[201,758,759],{"class":262},"evlog",[201,761,631],{"class":222},[201,763,764],{"class":203,"line":239},[201,765,309],{"emptyLinePlaceholder":308},[201,767,768,770,773,776],{"class":203,"line":286},[201,769,208],{"class":207},[201,771,772],{"class":232}," interface",[201,774,775],{"class":453}," MyAdapterConfig",[201,777,236],{"class":222},[201,779,780,783,785],{"class":203,"line":293},[201,781,782],{"class":256},"  apiKey",[201,784,340],{"class":222},[201,786,500],{"class":453},[201,788,789,792,794],{"class":203,"line":299},[201,790,791],{"class":256},"  endpoint",[201,793,488],{"class":222},[201,795,500],{"class":453},[201,797,798,801,803],{"class":203,"line":305},[201,799,800],{"class":256},"  timeout",[201,802,488],{"class":222},[201,804,805],{"class":453}," number\n",[201,807,808],{"class":203,"line":312},[201,809,562],{"class":222},[201,811,812],{"class":203,"line":334},[201,813,309],{"emptyLinePlaceholder":308},[201,815,816,818,821,824,826,829,831,833,835],{"class":203,"line":354},[201,817,208],{"class":207},[201,819,820],{"class":232}," function",[201,822,823],{"class":214}," createMyAdapter",[201,825,219],{"class":222},[201,827,828],{"class":225},"config",[201,830,340],{"class":222},[201,832,775],{"class":453},[201,834,229],{"class":222},[201,836,236],{"class":222},[201,838,839,842,845,848,851,853,856,859,861,864],{"class":203,"line":384},[201,840,841],{"class":232},"  const",[201,843,844],{"class":218}," endpoint",[201,846,847],{"class":222}," =",[201,849,850],{"class":218}," config",[201,852,245],{"class":222},[201,854,855],{"class":218},"endpoint",[201,857,858],{"class":222}," ??",[201,860,343],{"class":222},[201,862,863],{"class":262},"https://api.myservice.com/ingest",[201,865,631],{"class":222},[201,867,868,870,873,875,877,879,882,884],{"class":203,"line":413},[201,869,841],{"class":232},[201,871,872],{"class":218}," timeout",[201,874,847],{"class":222},[201,876,850],{"class":218},[201,878,245],{"class":222},[201,880,881],{"class":218},"timeout",[201,883,858],{"class":222},[201,885,887],{"class":886},"sbssI"," 5000\n",[201,889,890],{"class":203,"line":422},[201,891,309],{"emptyLinePlaceholder":308},[201,893,894,897,899,901,903,905,907,909,911],{"class":203,"line":430},[201,895,896],{"class":207},"  return",[201,898,271],{"class":232},[201,900,274],{"class":222},[201,902,277],{"class":225},[201,904,340],{"class":222},[201,906,454],{"class":453},[201,908,229],{"class":222},[201,910,233],{"class":232},[201,912,236],{"class":222},[201,914,915,918,921,923,926,929],{"class":203,"line":559},[201,916,917],{"class":232},"    const",[201,919,920],{"class":218}," controller",[201,922,847],{"class":222},[201,924,925],{"class":222}," new",[201,927,928],{"class":214}," AbortController",[201,930,931],{"class":256},"()\n",[201,933,934,936,939,941,944,946,949,951,953,955,958,960,962,964],{"class":203,"line":565},[201,935,917],{"class":232},[201,937,938],{"class":218}," timeoutId",[201,940,847],{"class":222},[201,942,943],{"class":214}," setTimeout",[201,945,219],{"class":256},[201,947,948],{"class":222},"()",[201,950,233],{"class":232},[201,952,920],{"class":218},[201,954,245],{"class":222},[201,956,957],{"class":214},"abort",[201,959,948],{"class":256},[201,961,268],{"class":222},[201,963,872],{"class":218},[201,965,419],{"class":256},[201,967,968],{"class":203,"line":570},[201,969,309],{"emptyLinePlaceholder":308},[201,971,972,975],{"class":203,"line":580},[201,973,974],{"class":207},"    try",[201,976,236],{"class":222},[201,978,979,982,985,987,990,992,994,996,998],{"class":203,"line":590},[201,980,981],{"class":232},"      const",[201,983,984],{"class":218}," response",[201,986,847],{"class":222},[201,988,989],{"class":207}," await",[201,991,318],{"class":214},[201,993,219],{"class":256},[201,995,855],{"class":218},[201,997,268],{"class":222},[201,999,236],{"class":222},[201,1001,1002,1005,1007,1009,1011,1013],{"class":203,"line":634},[201,1003,1004],{"class":256},"        method",[201,1006,340],{"class":222},[201,1008,343],{"class":222},[201,1010,346],{"class":262},[201,1012,259],{"class":222},[201,1014,351],{"class":222},[201,1016,1017,1020,1022],{"class":203,"line":644},[201,1018,1019],{"class":256},"        headers",[201,1021,340],{"class":222},[201,1023,236],{"class":222},[201,1025,1026,1029,1031,1033,1035,1037,1039,1041],{"class":203,"line":654},[201,1027,1028],{"class":222},"          '",[201,1030,367],{"class":256},[201,1032,259],{"class":222},[201,1034,340],{"class":222},[201,1036,343],{"class":222},[201,1038,376],{"class":262},[201,1040,259],{"class":222},[201,1042,351],{"class":222},[201,1044,1045,1047,1050,1052,1054,1056,1058,1061],{"class":203,"line":664},[201,1046,1028],{"class":222},[201,1048,1049],{"class":256},"X-API-Key",[201,1051,259],{"class":222},[201,1053,340],{"class":222},[201,1055,850],{"class":218},[201,1057,245],{"class":222},[201,1059,1060],{"class":218},"apiKey",[201,1062,351],{"class":222},[201,1064,1065],{"class":203,"line":674},[201,1066,1067],{"class":222},"        },\n",[201,1069,1070,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091],{"class":203,"line":684},[201,1071,1072],{"class":256},"        body",[201,1074,340],{"class":222},[201,1076,392],{"class":218},[201,1078,245],{"class":222},[201,1080,397],{"class":214},[201,1082,219],{"class":256},[201,1084,277],{"class":218},[201,1086,245],{"class":222},[201,1088,406],{"class":218},[201,1090,229],{"class":256},[201,1092,351],{"class":222},[201,1094,1095,1098,1100,1102,1104,1107],{"class":203,"line":694},[201,1096,1097],{"class":256},"        signal",[201,1099,340],{"class":222},[201,1101,920],{"class":218},[201,1103,245],{"class":222},[201,1105,1106],{"class":218},"signal",[201,1108,351],{"class":222},[201,1110,1111,1114],{"class":203,"line":700},[201,1112,1113],{"class":222},"      }",[201,1115,419],{"class":256},[201,1117,1118],{"class":203,"line":721},[201,1119,309],{"emptyLinePlaceholder":308},[201,1121,1123,1126,1128,1131,1134,1136,1139,1142],{"class":203,"line":1122},28,[201,1124,1125],{"class":207},"      if",[201,1127,274],{"class":256},[201,1129,1130],{"class":222},"!",[201,1132,1133],{"class":218},"response",[201,1135,245],{"class":222},[201,1137,1138],{"class":218},"ok",[201,1140,1141],{"class":256},") ",[201,1143,1144],{"class":222},"{\n",[201,1146,1148,1151,1153,1155,1157,1160,1163,1166,1168,1170,1173,1176],{"class":203,"line":1147},29,[201,1149,1150],{"class":218},"        console",[201,1152,245],{"class":222},[201,1154,628],{"class":214},[201,1156,219],{"class":256},[201,1158,1159],{"class":222},"`",[201,1161,1162],{"class":262},"[my-adapter] Failed: ",[201,1164,1165],{"class":222},"${",[201,1167,1133],{"class":218},[201,1169,245],{"class":222},[201,1171,1172],{"class":218},"status",[201,1174,1175],{"class":222},"}`",[201,1177,419],{"class":256},[201,1179,1181],{"class":203,"line":1180},30,[201,1182,1183],{"class":222},"      }\n",[201,1185,1187,1189,1192,1194,1196,1198],{"class":203,"line":1186},31,[201,1188,416],{"class":222},[201,1190,1191],{"class":207}," catch",[201,1193,274],{"class":256},[201,1195,628],{"class":218},[201,1197,1141],{"class":256},[201,1199,1144],{"class":222},[201,1201,1203,1205,1207,1209,1212,1215,1218,1221,1223,1226,1229,1231,1234,1236,1238],{"class":203,"line":1202},32,[201,1204,1125],{"class":207},[201,1206,274],{"class":256},[201,1208,628],{"class":218},[201,1210,1211],{"class":222}," instanceof",[201,1213,1214],{"class":453}," Error",[201,1216,1217],{"class":222}," &&",[201,1219,1220],{"class":218}," error",[201,1222,245],{"class":222},[201,1224,1225],{"class":218},"name",[201,1227,1228],{"class":222}," ===",[201,1230,343],{"class":222},[201,1232,1233],{"class":262},"AbortError",[201,1235,259],{"class":222},[201,1237,1141],{"class":256},[201,1239,1144],{"class":222},[201,1241,1243,1245,1247,1249,1251,1253,1256,1258],{"class":203,"line":1242},33,[201,1244,1150],{"class":218},[201,1246,245],{"class":222},[201,1248,628],{"class":214},[201,1250,219],{"class":256},[201,1252,259],{"class":222},[201,1254,1255],{"class":262},"[my-adapter] Request timed out",[201,1257,259],{"class":222},[201,1259,419],{"class":256},[201,1261,1263,1265,1268],{"class":203,"line":1262},34,[201,1264,1113],{"class":222},[201,1266,1267],{"class":207}," else",[201,1269,236],{"class":222},[201,1271,1273,1275,1277,1279,1281,1283,1286,1288,1290,1292],{"class":203,"line":1272},35,[201,1274,1150],{"class":218},[201,1276,245],{"class":222},[201,1278,628],{"class":214},[201,1280,219],{"class":256},[201,1282,259],{"class":222},[201,1284,1285],{"class":262},"[my-adapter] Error:",[201,1287,259],{"class":222},[201,1289,268],{"class":222},[201,1291,1220],{"class":218},[201,1293,419],{"class":256},[201,1295,1297],{"class":203,"line":1296},36,[201,1298,1183],{"class":222},[201,1300,1302,1304,1307],{"class":203,"line":1301},37,[201,1303,416],{"class":222},[201,1305,1306],{"class":207}," finally",[201,1308,236],{"class":222},[201,1310,1312,1315,1317,1320],{"class":203,"line":1311},38,[201,1313,1314],{"class":214},"      clearTimeout",[201,1316,219],{"class":256},[201,1318,1319],{"class":218},"timeoutId",[201,1321,419],{"class":256},[201,1323,1325],{"class":203,"line":1324},39,[201,1326,1327],{"class":222},"    }\n",[201,1329,1331],{"class":203,"line":1330},40,[201,1332,523],{"class":222},[201,1334,1336],{"class":203,"line":1335},41,[201,1337,562],{"class":222},[191,1339,1341],{"className":193,"code":1340,"filename":195,"language":196,"meta":197,"style":197},"import { createMyAdapter } from '~/lib/my-adapter'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const drain = createMyAdapter({\n    apiKey: process.env.MY_SERVICE_API_KEY!,\n  })\n\n  nitroApp.hooks.hook('evlog:drain', drain)\n})\n",[181,1342,1343,1362,1366,1386,1401,1424,1430,1434,1460],{"__ignoreMap":197},[201,1344,1345,1347,1349,1351,1353,1355,1357,1360],{"class":203,"line":204},[201,1346,741],{"class":207},[201,1348,362],{"class":222},[201,1350,823],{"class":218},[201,1352,751],{"class":222},[201,1354,754],{"class":207},[201,1356,343],{"class":222},[201,1358,1359],{"class":262},"~/lib/my-adapter",[201,1361,631],{"class":222},[201,1363,1364],{"class":203,"line":239},[201,1365,309],{"emptyLinePlaceholder":308},[201,1367,1368,1370,1372,1374,1376,1378,1380,1382,1384],{"class":203,"line":286},[201,1369,208],{"class":207},[201,1371,211],{"class":207},[201,1373,215],{"class":214},[201,1375,219],{"class":218},[201,1377,219],{"class":222},[201,1379,226],{"class":225},[201,1381,229],{"class":222},[201,1383,233],{"class":232},[201,1385,236],{"class":222},[201,1387,1388,1390,1393,1395,1397,1399],{"class":203,"line":293},[201,1389,841],{"class":232},[201,1391,1392],{"class":218}," drain",[201,1394,847],{"class":222},[201,1396,823],{"class":214},[201,1398,219],{"class":256},[201,1400,1144],{"class":222},[201,1402,1403,1406,1408,1411,1413,1416,1418,1421],{"class":203,"line":299},[201,1404,1405],{"class":256},"    apiKey",[201,1407,340],{"class":222},[201,1409,1410],{"class":218}," process",[201,1412,245],{"class":222},[201,1414,1415],{"class":218},"env",[201,1417,245],{"class":222},[201,1419,1420],{"class":218},"MY_SERVICE_API_KEY",[201,1422,1423],{"class":222},"!,\n",[201,1425,1426,1428],{"class":203,"line":305},[201,1427,425],{"class":222},[201,1429,419],{"class":256},[201,1431,1432],{"class":203,"line":312},[201,1433,309],{"emptyLinePlaceholder":308},[201,1435,1436,1438,1440,1442,1444,1446,1448,1450,1452,1454,1456,1458],{"class":203,"line":334},[201,1437,242],{"class":218},[201,1439,245],{"class":222},[201,1441,248],{"class":218},[201,1443,245],{"class":222},[201,1445,253],{"class":214},[201,1447,219],{"class":256},[201,1449,259],{"class":222},[201,1451,263],{"class":262},[201,1453,259],{"class":222},[201,1455,268],{"class":222},[201,1457,1392],{"class":218},[201,1459,419],{"class":256},[201,1461,1462,1464],{"class":203,"line":354},[201,1463,433],{"class":222},[201,1465,419],{"class":218},[186,1467,1469],{"id":1468},"reading-from-runtime-config","Reading from Runtime Config",[177,1471,1472],{},"Follow the evlog adapter pattern for zero-config setup:",[191,1474,1476],{"className":193,"code":1475,"filename":734,"language":196,"meta":197,"style":197},"function getRuntimeConfig() {\n  try {\n    const { useRuntimeConfig } = require('nitropack/runtime')\n    return useRuntimeConfig()\n  } catch {\n    return undefined\n  }\n}\n\nexport function createMyAdapter(overrides?: Partial\u003CMyAdapterConfig>) {\n  return async (ctx: DrainContext) => {\n    const runtimeConfig = getRuntimeConfig()\n\n    // Support runtimeConfig.evlog.myService and runtimeConfig.myService\n    const evlogConfig = runtimeConfig?.evlog?.myService\n    const rootConfig = runtimeConfig?.myService\n\n    const config = {\n      apiKey: overrides?.apiKey ?? evlogConfig?.apiKey ?? rootConfig?.apiKey ?? process.env.MY_SERVICE_API_KEY,\n      endpoint: overrides?.endpoint ?? evlogConfig?.endpoint ?? rootConfig?.endpoint,\n    }\n\n    if (!config.apiKey) {\n      console.error('[my-adapter] Missing API key')\n      return\n    }\n\n    // Send the event...\n  }\n}\n",[181,1477,1478,1490,1497,1524,1533,1541,1548,1552,1556,1560,1588,1608,1621,1625,1630,1651,1666,1670,1680,1724,1755,1759,1763,1782,1802,1807,1811,1815,1820,1824],{"__ignoreMap":197},[201,1479,1480,1483,1486,1488],{"class":203,"line":204},[201,1481,1482],{"class":232},"function",[201,1484,1485],{"class":214}," getRuntimeConfig",[201,1487,948],{"class":222},[201,1489,236],{"class":222},[201,1491,1492,1495],{"class":203,"line":239},[201,1493,1494],{"class":207},"  try",[201,1496,236],{"class":222},[201,1498,1499,1501,1503,1506,1508,1510,1513,1515,1517,1520,1522],{"class":203,"line":286},[201,1500,917],{"class":232},[201,1502,362],{"class":222},[201,1504,1505],{"class":218}," useRuntimeConfig",[201,1507,751],{"class":222},[201,1509,847],{"class":222},[201,1511,1512],{"class":214}," require",[201,1514,219],{"class":256},[201,1516,259],{"class":222},[201,1518,1519],{"class":262},"nitropack/runtime",[201,1521,259],{"class":222},[201,1523,419],{"class":256},[201,1525,1526,1529,1531],{"class":203,"line":293},[201,1527,1528],{"class":207},"    return",[201,1530,1505],{"class":214},[201,1532,931],{"class":256},[201,1534,1535,1537,1539],{"class":203,"line":299},[201,1536,425],{"class":222},[201,1538,1191],{"class":207},[201,1540,236],{"class":222},[201,1542,1543,1545],{"class":203,"line":305},[201,1544,1528],{"class":207},[201,1546,1547],{"class":222}," undefined\n",[201,1549,1550],{"class":203,"line":312},[201,1551,523],{"class":222},[201,1553,1554],{"class":203,"line":334},[201,1555,562],{"class":222},[201,1557,1558],{"class":203,"line":354},[201,1559,309],{"emptyLinePlaceholder":308},[201,1561,1562,1564,1566,1568,1570,1573,1575,1578,1580,1583,1586],{"class":203,"line":384},[201,1563,208],{"class":207},[201,1565,820],{"class":232},[201,1567,823],{"class":214},[201,1569,219],{"class":222},[201,1571,1572],{"class":225},"overrides",[201,1574,488],{"class":222},[201,1576,1577],{"class":453}," Partial",[201,1579,545],{"class":222},[201,1581,1582],{"class":453},"MyAdapterConfig",[201,1584,1585],{"class":222},">)",[201,1587,236],{"class":222},[201,1589,1590,1592,1594,1596,1598,1600,1602,1604,1606],{"class":203,"line":413},[201,1591,896],{"class":207},[201,1593,271],{"class":232},[201,1595,274],{"class":222},[201,1597,277],{"class":225},[201,1599,340],{"class":222},[201,1601,454],{"class":453},[201,1603,229],{"class":222},[201,1605,233],{"class":232},[201,1607,236],{"class":222},[201,1609,1610,1612,1615,1617,1619],{"class":203,"line":422},[201,1611,917],{"class":232},[201,1613,1614],{"class":218}," runtimeConfig",[201,1616,847],{"class":222},[201,1618,1485],{"class":214},[201,1620,931],{"class":256},[201,1622,1623],{"class":203,"line":430},[201,1624,309],{"emptyLinePlaceholder":308},[201,1626,1627],{"class":203,"line":559},[201,1628,1629],{"class":289},"    // Support runtimeConfig.evlog.myService and runtimeConfig.myService\n",[201,1631,1632,1634,1637,1639,1641,1644,1646,1648],{"class":203,"line":565},[201,1633,917],{"class":232},[201,1635,1636],{"class":218}," evlogConfig",[201,1638,847],{"class":222},[201,1640,1614],{"class":218},[201,1642,1643],{"class":222},"?.",[201,1645,759],{"class":218},[201,1647,1643],{"class":222},[201,1649,1650],{"class":218},"myService\n",[201,1652,1653,1655,1658,1660,1662,1664],{"class":203,"line":570},[201,1654,917],{"class":232},[201,1656,1657],{"class":218}," rootConfig",[201,1659,847],{"class":222},[201,1661,1614],{"class":218},[201,1663,1643],{"class":222},[201,1665,1650],{"class":218},[201,1667,1668],{"class":203,"line":580},[201,1669,309],{"emptyLinePlaceholder":308},[201,1671,1672,1674,1676,1678],{"class":203,"line":590},[201,1673,917],{"class":232},[201,1675,850],{"class":218},[201,1677,847],{"class":222},[201,1679,236],{"class":222},[201,1681,1682,1685,1687,1690,1692,1694,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722],{"class":203,"line":634},[201,1683,1684],{"class":256},"      apiKey",[201,1686,340],{"class":222},[201,1688,1689],{"class":218}," overrides",[201,1691,1643],{"class":222},[201,1693,1060],{"class":218},[201,1695,858],{"class":222},[201,1697,1636],{"class":218},[201,1699,1643],{"class":222},[201,1701,1060],{"class":218},[201,1703,858],{"class":222},[201,1705,1657],{"class":218},[201,1707,1643],{"class":222},[201,1709,1060],{"class":218},[201,1711,858],{"class":222},[201,1713,1410],{"class":218},[201,1715,245],{"class":222},[201,1717,1415],{"class":218},[201,1719,245],{"class":222},[201,1721,1420],{"class":218},[201,1723,351],{"class":222},[201,1725,1726,1729,1731,1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753],{"class":203,"line":644},[201,1727,1728],{"class":256},"      endpoint",[201,1730,340],{"class":222},[201,1732,1689],{"class":218},[201,1734,1643],{"class":222},[201,1736,855],{"class":218},[201,1738,858],{"class":222},[201,1740,1636],{"class":218},[201,1742,1643],{"class":222},[201,1744,855],{"class":218},[201,1746,858],{"class":222},[201,1748,1657],{"class":218},[201,1750,1643],{"class":222},[201,1752,855],{"class":218},[201,1754,351],{"class":222},[201,1756,1757],{"class":203,"line":654},[201,1758,1327],{"class":222},[201,1760,1761],{"class":203,"line":664},[201,1762,309],{"emptyLinePlaceholder":308},[201,1764,1765,1768,1770,1772,1774,1776,1778,1780],{"class":203,"line":674},[201,1766,1767],{"class":207},"    if",[201,1769,274],{"class":256},[201,1771,1130],{"class":222},[201,1773,828],{"class":218},[201,1775,245],{"class":222},[201,1777,1060],{"class":218},[201,1779,1141],{"class":256},[201,1781,1144],{"class":222},[201,1783,1784,1787,1789,1791,1793,1795,1798,1800],{"class":203,"line":684},[201,1785,1786],{"class":218},"      console",[201,1788,245],{"class":222},[201,1790,628],{"class":214},[201,1792,219],{"class":256},[201,1794,259],{"class":222},[201,1796,1797],{"class":262},"[my-adapter] Missing API key",[201,1799,259],{"class":222},[201,1801,419],{"class":256},[201,1803,1804],{"class":203,"line":694},[201,1805,1806],{"class":207},"      return\n",[201,1808,1809],{"class":203,"line":700},[201,1810,1327],{"class":222},[201,1812,1813],{"class":203,"line":721},[201,1814,309],{"emptyLinePlaceholder":308},[201,1816,1817],{"class":203,"line":1122},[201,1818,1819],{"class":289},"    // Send the event...\n",[201,1821,1822],{"class":203,"line":1147},[201,1823,523],{"class":222},[201,1825,1826],{"class":203,"line":1180},[201,1827,562],{"class":222},[186,1829,1831],{"id":1830},"filtering-events","Filtering Events",[177,1833,1834],{},"Filter which events to send:",[191,1836,1838],{"className":193,"code":1837,"filename":195,"language":196,"meta":197,"style":197},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', async (ctx) => {\n    // Only send errors\n    if (ctx.event.level !== 'error') return\n\n    // Skip health checks\n    if (ctx.request?.path === '/health') return\n\n    // Skip sampled-out events\n    if (ctx.event._sampled === false) return\n\n    await sendToMyService(ctx.event)\n  })\n})\n",[181,1839,1840,1860,1894,1899,1930,1934,1939,1970,1974,1979,2006,2010,2027,2033],{"__ignoreMap":197},[201,1841,1842,1844,1846,1848,1850,1852,1854,1856,1858],{"class":203,"line":204},[201,1843,208],{"class":207},[201,1845,211],{"class":207},[201,1847,215],{"class":214},[201,1849,219],{"class":218},[201,1851,219],{"class":222},[201,1853,226],{"class":225},[201,1855,229],{"class":222},[201,1857,233],{"class":232},[201,1859,236],{"class":222},[201,1861,1862,1864,1866,1868,1870,1872,1874,1876,1878,1880,1882,1884,1886,1888,1890,1892],{"class":203,"line":239},[201,1863,242],{"class":218},[201,1865,245],{"class":222},[201,1867,248],{"class":218},[201,1869,245],{"class":222},[201,1871,253],{"class":214},[201,1873,219],{"class":256},[201,1875,259],{"class":222},[201,1877,263],{"class":262},[201,1879,259],{"class":222},[201,1881,268],{"class":222},[201,1883,271],{"class":232},[201,1885,274],{"class":222},[201,1887,277],{"class":225},[201,1889,229],{"class":222},[201,1891,233],{"class":232},[201,1893,236],{"class":222},[201,1895,1896],{"class":203,"line":286},[201,1897,1898],{"class":289},"    // Only send errors\n",[201,1900,1901,1903,1905,1907,1909,1911,1913,1916,1919,1921,1923,1925,1927],{"class":203,"line":293},[201,1902,1767],{"class":207},[201,1904,274],{"class":256},[201,1906,277],{"class":218},[201,1908,245],{"class":222},[201,1910,406],{"class":218},[201,1912,245],{"class":222},[201,1914,1915],{"class":218},"level",[201,1917,1918],{"class":222}," !==",[201,1920,343],{"class":222},[201,1922,628],{"class":262},[201,1924,259],{"class":222},[201,1926,1141],{"class":256},[201,1928,1929],{"class":207},"return\n",[201,1931,1932],{"class":203,"line":299},[201,1933,309],{"emptyLinePlaceholder":308},[201,1935,1936],{"class":203,"line":305},[201,1937,1938],{"class":289},"    // Skip health checks\n",[201,1940,1941,1943,1945,1947,1949,1952,1954,1957,1959,1961,1964,1966,1968],{"class":203,"line":312},[201,1942,1767],{"class":207},[201,1944,274],{"class":256},[201,1946,277],{"class":218},[201,1948,245],{"class":222},[201,1950,1951],{"class":218},"request",[201,1953,1643],{"class":222},[201,1955,1956],{"class":218},"path",[201,1958,1228],{"class":222},[201,1960,343],{"class":222},[201,1962,1963],{"class":262},"/health",[201,1965,259],{"class":222},[201,1967,1141],{"class":256},[201,1969,1929],{"class":207},[201,1971,1972],{"class":203,"line":334},[201,1973,309],{"emptyLinePlaceholder":308},[201,1975,1976],{"class":203,"line":354},[201,1977,1978],{"class":289},"    // Skip sampled-out events\n",[201,1980,1981,1983,1985,1987,1989,1991,1993,1996,1998,2002,2004],{"class":203,"line":384},[201,1982,1767],{"class":207},[201,1984,274],{"class":256},[201,1986,277],{"class":218},[201,1988,245],{"class":222},[201,1990,406],{"class":218},[201,1992,245],{"class":222},[201,1994,1995],{"class":218},"_sampled",[201,1997,1228],{"class":222},[201,1999,2001],{"class":2000},"sfNiH"," false",[201,2003,1141],{"class":256},[201,2005,1929],{"class":207},[201,2007,2008],{"class":203,"line":413},[201,2009,309],{"emptyLinePlaceholder":308},[201,2011,2012,2014,2017,2019,2021,2023,2025],{"class":203,"line":422},[201,2013,315],{"class":207},[201,2015,2016],{"class":214}," sendToMyService",[201,2018,219],{"class":256},[201,2020,277],{"class":218},[201,2022,245],{"class":222},[201,2024,406],{"class":218},[201,2026,419],{"class":256},[201,2028,2029,2031],{"class":203,"line":430},[201,2030,425],{"class":222},[201,2032,419],{"class":256},[201,2034,2035,2037],{"class":203,"line":559},[201,2036,433],{"class":222},[201,2038,419],{"class":218},[186,2040,2042],{"id":2041},"transforming-events","Transforming Events",[177,2044,2045],{},"Transform events before sending:",[191,2047,2049],{"className":193,"code":2048,"filename":195,"language":196,"meta":197,"style":197},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', async (ctx) => {\n    // Transform to your service's format\n    const payload = {\n      ts: new Date(ctx.event.timestamp).getTime(),\n      severity: ctx.event.level.toUpperCase(),\n      message: JSON.stringify(ctx.event),\n      labels: {\n        service: ctx.event.service,\n        env: ctx.event.environment,\n      },\n      attributes: {\n        method: ctx.event.method,\n        path: ctx.event.path,\n        status: ctx.event.status,\n        duration: ctx.event.duration,\n      },\n    }\n\n    await fetch('https://logs.example.com/v1/push', {\n      method: 'POST',\n      body: JSON.stringify(payload),\n    })\n  })\n})\n",[181,2050,2051,2071,2105,2110,2121,2157,2184,2209,2218,2238,2258,2263,2272,2291,2310,2329,2349,2353,2357,2361,2380,2394,2415,2421,2427],{"__ignoreMap":197},[201,2052,2053,2055,2057,2059,2061,2063,2065,2067,2069],{"class":203,"line":204},[201,2054,208],{"class":207},[201,2056,211],{"class":207},[201,2058,215],{"class":214},[201,2060,219],{"class":218},[201,2062,219],{"class":222},[201,2064,226],{"class":225},[201,2066,229],{"class":222},[201,2068,233],{"class":232},[201,2070,236],{"class":222},[201,2072,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103],{"class":203,"line":239},[201,2074,242],{"class":218},[201,2076,245],{"class":222},[201,2078,248],{"class":218},[201,2080,245],{"class":222},[201,2082,253],{"class":214},[201,2084,219],{"class":256},[201,2086,259],{"class":222},[201,2088,263],{"class":262},[201,2090,259],{"class":222},[201,2092,268],{"class":222},[201,2094,271],{"class":232},[201,2096,274],{"class":222},[201,2098,277],{"class":225},[201,2100,229],{"class":222},[201,2102,233],{"class":232},[201,2104,236],{"class":222},[201,2106,2107],{"class":203,"line":286},[201,2108,2109],{"class":289},"    // Transform to your service's format\n",[201,2111,2112,2114,2117,2119],{"class":203,"line":293},[201,2113,917],{"class":232},[201,2115,2116],{"class":218}," payload",[201,2118,847],{"class":222},[201,2120,236],{"class":222},[201,2122,2123,2126,2128,2130,2133,2135,2137,2139,2141,2143,2146,2148,2150,2153,2155],{"class":203,"line":299},[201,2124,2125],{"class":256},"      ts",[201,2127,340],{"class":222},[201,2129,925],{"class":222},[201,2131,2132],{"class":214}," Date",[201,2134,219],{"class":256},[201,2136,277],{"class":218},[201,2138,245],{"class":222},[201,2140,406],{"class":218},[201,2142,245],{"class":222},[201,2144,2145],{"class":218},"timestamp",[201,2147,229],{"class":256},[201,2149,245],{"class":222},[201,2151,2152],{"class":214},"getTime",[201,2154,948],{"class":256},[201,2156,351],{"class":222},[201,2158,2159,2162,2164,2167,2169,2171,2173,2175,2177,2180,2182],{"class":203,"line":305},[201,2160,2161],{"class":256},"      severity",[201,2163,340],{"class":222},[201,2165,2166],{"class":218}," ctx",[201,2168,245],{"class":222},[201,2170,406],{"class":218},[201,2172,245],{"class":222},[201,2174,1915],{"class":218},[201,2176,245],{"class":222},[201,2178,2179],{"class":214},"toUpperCase",[201,2181,948],{"class":256},[201,2183,351],{"class":222},[201,2185,2186,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207],{"class":203,"line":312},[201,2187,2188],{"class":256},"      message",[201,2190,340],{"class":222},[201,2192,392],{"class":218},[201,2194,245],{"class":222},[201,2196,397],{"class":214},[201,2198,219],{"class":256},[201,2200,277],{"class":218},[201,2202,245],{"class":222},[201,2204,406],{"class":218},[201,2206,229],{"class":256},[201,2208,351],{"class":222},[201,2210,2211,2214,2216],{"class":203,"line":334},[201,2212,2213],{"class":256},"      labels",[201,2215,340],{"class":222},[201,2217,236],{"class":222},[201,2219,2220,2223,2225,2227,2229,2231,2233,2236],{"class":203,"line":354},[201,2221,2222],{"class":256},"        service",[201,2224,340],{"class":222},[201,2226,2166],{"class":218},[201,2228,245],{"class":222},[201,2230,406],{"class":218},[201,2232,245],{"class":222},[201,2234,2235],{"class":218},"service",[201,2237,351],{"class":222},[201,2239,2240,2243,2245,2247,2249,2251,2253,2256],{"class":203,"line":384},[201,2241,2242],{"class":256},"        env",[201,2244,340],{"class":222},[201,2246,2166],{"class":218},[201,2248,245],{"class":222},[201,2250,406],{"class":218},[201,2252,245],{"class":222},[201,2254,2255],{"class":218},"environment",[201,2257,351],{"class":222},[201,2259,2260],{"class":203,"line":413},[201,2261,2262],{"class":222},"      },\n",[201,2264,2265,2268,2270],{"class":203,"line":422},[201,2266,2267],{"class":256},"      attributes",[201,2269,340],{"class":222},[201,2271,236],{"class":222},[201,2273,2274,2276,2278,2280,2282,2284,2286,2289],{"class":203,"line":430},[201,2275,1004],{"class":256},[201,2277,340],{"class":222},[201,2279,2166],{"class":218},[201,2281,245],{"class":222},[201,2283,406],{"class":218},[201,2285,245],{"class":222},[201,2287,2288],{"class":218},"method",[201,2290,351],{"class":222},[201,2292,2293,2296,2298,2300,2302,2304,2306,2308],{"class":203,"line":559},[201,2294,2295],{"class":256},"        path",[201,2297,340],{"class":222},[201,2299,2166],{"class":218},[201,2301,245],{"class":222},[201,2303,406],{"class":218},[201,2305,245],{"class":222},[201,2307,1956],{"class":218},[201,2309,351],{"class":222},[201,2311,2312,2315,2317,2319,2321,2323,2325,2327],{"class":203,"line":565},[201,2313,2314],{"class":256},"        status",[201,2316,340],{"class":222},[201,2318,2166],{"class":218},[201,2320,245],{"class":222},[201,2322,406],{"class":218},[201,2324,245],{"class":222},[201,2326,1172],{"class":218},[201,2328,351],{"class":222},[201,2330,2331,2334,2336,2338,2340,2342,2344,2347],{"class":203,"line":570},[201,2332,2333],{"class":256},"        duration",[201,2335,340],{"class":222},[201,2337,2166],{"class":218},[201,2339,245],{"class":222},[201,2341,406],{"class":218},[201,2343,245],{"class":222},[201,2345,2346],{"class":218},"duration",[201,2348,351],{"class":222},[201,2350,2351],{"class":203,"line":580},[201,2352,2262],{"class":222},[201,2354,2355],{"class":203,"line":590},[201,2356,1327],{"class":222},[201,2358,2359],{"class":203,"line":634},[201,2360,309],{"emptyLinePlaceholder":308},[201,2362,2363,2365,2367,2369,2371,2374,2376,2378],{"class":203,"line":644},[201,2364,315],{"class":207},[201,2366,318],{"class":214},[201,2368,219],{"class":256},[201,2370,259],{"class":222},[201,2372,2373],{"class":262},"https://logs.example.com/v1/push",[201,2375,259],{"class":222},[201,2377,268],{"class":222},[201,2379,236],{"class":222},[201,2381,2382,2384,2386,2388,2390,2392],{"class":203,"line":654},[201,2383,337],{"class":256},[201,2385,340],{"class":222},[201,2387,343],{"class":222},[201,2389,346],{"class":262},[201,2391,259],{"class":222},[201,2393,351],{"class":222},[201,2395,2396,2398,2400,2402,2404,2406,2408,2411,2413],{"class":203,"line":664},[201,2397,387],{"class":256},[201,2399,340],{"class":222},[201,2401,392],{"class":218},[201,2403,245],{"class":222},[201,2405,397],{"class":214},[201,2407,219],{"class":256},[201,2409,2410],{"class":218},"payload",[201,2412,229],{"class":256},[201,2414,351],{"class":222},[201,2416,2417,2419],{"class":203,"line":674},[201,2418,416],{"class":222},[201,2420,419],{"class":256},[201,2422,2423,2425],{"class":203,"line":684},[201,2424,425],{"class":222},[201,2426,419],{"class":256},[201,2428,2429,2431],{"class":203,"line":694},[201,2430,433],{"class":222},[201,2432,419],{"class":218},[186,2434,2436],{"id":2435},"batching","Batching",[177,2438,2439,2440,2444],{},"For high-throughput scenarios, use the ",[2441,2442,2443],"a",{"href":97},"Drain Pipeline"," to batch events, retry on failure, and handle buffer overflow automatically:",[191,2446,2448],{"className":193,"code":2447,"filename":195,"language":196,"meta":197,"style":197},"import type { DrainContext } from 'evlog'\nimport { createDrainPipeline } from 'evlog/pipeline'\n\nexport default defineNitroPlugin((nitroApp) => {\n  const pipeline = createDrainPipeline\u003CDrainContext>({\n    batch: { size: 100, intervalMs: 5000 },\n  })\n\n  const drain = pipeline(async (batch) => {\n    await fetch('https://api.example.com/logs/batch', {\n      method: 'POST',\n      body: JSON.stringify(batch.map(ctx => ctx.event)),\n    })\n  })\n\n  nitroApp.hooks.hook('evlog:drain', drain)\n  nitroApp.hooks.hook('close', () => drain.flush())\n})\n",[181,2449,2450,2470,2490,2494,2514,2536,2565,2571,2575,2601,2620,2634,2672,2678,2684,2688,2714,2752],{"__ignoreMap":197},[201,2451,2452,2454,2456,2458,2460,2462,2464,2466,2468],{"class":203,"line":204},[201,2453,741],{"class":207},[201,2455,744],{"class":207},[201,2457,362],{"class":222},[201,2459,454],{"class":218},[201,2461,751],{"class":222},[201,2463,754],{"class":207},[201,2465,343],{"class":222},[201,2467,759],{"class":262},[201,2469,631],{"class":222},[201,2471,2472,2474,2476,2479,2481,2483,2485,2488],{"class":203,"line":239},[201,2473,741],{"class":207},[201,2475,362],{"class":222},[201,2477,2478],{"class":218}," createDrainPipeline",[201,2480,751],{"class":222},[201,2482,754],{"class":207},[201,2484,343],{"class":222},[201,2486,2487],{"class":262},"evlog/pipeline",[201,2489,631],{"class":222},[201,2491,2492],{"class":203,"line":286},[201,2493,309],{"emptyLinePlaceholder":308},[201,2495,2496,2498,2500,2502,2504,2506,2508,2510,2512],{"class":203,"line":293},[201,2497,208],{"class":207},[201,2499,211],{"class":207},[201,2501,215],{"class":214},[201,2503,219],{"class":218},[201,2505,219],{"class":222},[201,2507,226],{"class":225},[201,2509,229],{"class":222},[201,2511,233],{"class":232},[201,2513,236],{"class":222},[201,2515,2516,2518,2521,2523,2525,2527,2529,2532,2534],{"class":203,"line":299},[201,2517,841],{"class":232},[201,2519,2520],{"class":218}," pipeline",[201,2522,847],{"class":222},[201,2524,2478],{"class":214},[201,2526,545],{"class":222},[201,2528,183],{"class":453},[201,2530,2531],{"class":222},">",[201,2533,219],{"class":256},[201,2535,1144],{"class":222},[201,2537,2538,2541,2543,2545,2548,2550,2553,2555,2558,2560,2563],{"class":203,"line":305},[201,2539,2540],{"class":256},"    batch",[201,2542,340],{"class":222},[201,2544,362],{"class":222},[201,2546,2547],{"class":256}," size",[201,2549,340],{"class":222},[201,2551,2552],{"class":886}," 100",[201,2554,268],{"class":222},[201,2556,2557],{"class":256}," intervalMs",[201,2559,340],{"class":222},[201,2561,2562],{"class":886}," 5000",[201,2564,381],{"class":222},[201,2566,2567,2569],{"class":203,"line":312},[201,2568,425],{"class":222},[201,2570,419],{"class":256},[201,2572,2573],{"class":203,"line":334},[201,2574,309],{"emptyLinePlaceholder":308},[201,2576,2577,2579,2581,2583,2585,2587,2590,2592,2595,2597,2599],{"class":203,"line":354},[201,2578,841],{"class":232},[201,2580,1392],{"class":218},[201,2582,847],{"class":222},[201,2584,2520],{"class":214},[201,2586,219],{"class":256},[201,2588,2589],{"class":232},"async",[201,2591,274],{"class":222},[201,2593,2594],{"class":225},"batch",[201,2596,229],{"class":222},[201,2598,233],{"class":232},[201,2600,236],{"class":222},[201,2602,2603,2605,2607,2609,2611,2614,2616,2618],{"class":203,"line":384},[201,2604,315],{"class":207},[201,2606,318],{"class":214},[201,2608,219],{"class":256},[201,2610,259],{"class":222},[201,2612,2613],{"class":262},"https://api.example.com/logs/batch",[201,2615,259],{"class":222},[201,2617,268],{"class":222},[201,2619,236],{"class":222},[201,2621,2622,2624,2626,2628,2630,2632],{"class":203,"line":413},[201,2623,337],{"class":256},[201,2625,340],{"class":222},[201,2627,343],{"class":222},[201,2629,346],{"class":262},[201,2631,259],{"class":222},[201,2633,351],{"class":222},[201,2635,2636,2638,2640,2642,2644,2646,2648,2650,2652,2655,2657,2659,2661,2663,2665,2667,2670],{"class":203,"line":422},[201,2637,387],{"class":256},[201,2639,340],{"class":222},[201,2641,392],{"class":218},[201,2643,245],{"class":222},[201,2645,397],{"class":214},[201,2647,219],{"class":256},[201,2649,2594],{"class":218},[201,2651,245],{"class":222},[201,2653,2654],{"class":214},"map",[201,2656,219],{"class":256},[201,2658,277],{"class":225},[201,2660,233],{"class":232},[201,2662,2166],{"class":218},[201,2664,245],{"class":222},[201,2666,406],{"class":218},[201,2668,2669],{"class":256},"))",[201,2671,351],{"class":222},[201,2673,2674,2676],{"class":203,"line":430},[201,2675,416],{"class":222},[201,2677,419],{"class":256},[201,2679,2680,2682],{"class":203,"line":559},[201,2681,425],{"class":222},[201,2683,419],{"class":256},[201,2685,2686],{"class":203,"line":565},[201,2687,309],{"emptyLinePlaceholder":308},[201,2689,2690,2692,2694,2696,2698,2700,2702,2704,2706,2708,2710,2712],{"class":203,"line":570},[201,2691,242],{"class":218},[201,2693,245],{"class":222},[201,2695,248],{"class":218},[201,2697,245],{"class":222},[201,2699,253],{"class":214},[201,2701,219],{"class":256},[201,2703,259],{"class":222},[201,2705,263],{"class":262},[201,2707,259],{"class":222},[201,2709,268],{"class":222},[201,2711,1392],{"class":218},[201,2713,419],{"class":256},[201,2715,2716,2718,2720,2722,2724,2726,2728,2730,2733,2735,2737,2740,2742,2744,2746,2749],{"class":203,"line":580},[201,2717,242],{"class":218},[201,2719,245],{"class":222},[201,2721,248],{"class":218},[201,2723,245],{"class":222},[201,2725,253],{"class":214},[201,2727,219],{"class":256},[201,2729,259],{"class":222},[201,2731,2732],{"class":262},"close",[201,2734,259],{"class":222},[201,2736,268],{"class":222},[201,2738,2739],{"class":222}," ()",[201,2741,233],{"class":232},[201,2743,1392],{"class":218},[201,2745,245],{"class":222},[201,2747,2748],{"class":214},"flush",[201,2750,2751],{"class":256},"())\n",[201,2753,2754,2756],{"class":203,"line":590},[201,2755,433],{"class":222},[201,2757,419],{"class":218},[2759,2760,2762,2763,2766],"callout",{"color":610,"icon":2761},"i-lucide-arrow-right","See the ",[2441,2764,2765],{"href":97},"Pipeline documentation"," for the full options reference, retry strategies, and buffer overflow handling.",[186,2768,2770],{"id":2769},"error-handling-best-practices","Error Handling Best Practices",[2772,2773,2774,2782,2792,2798],"ol",{},[2775,2776,2777,2781],"li",{},[2778,2779,2780],"strong",{},"Never throw errors"," - The drain should not crash your app",[2775,2783,2784,2787,2788,2791],{},[2778,2785,2786],{},"Log failures silently"," - Use ",[181,2789,2790],{},"console.error"," for debugging",[2775,2793,2794,2797],{},[2778,2795,2796],{},"Use timeouts"," - Prevent hanging requests",[2775,2799,2800,2803],{},[2778,2801,2802],{},"Graceful degradation"," - Skip sending if config is missing",[191,2805,2808],{"className":193,"code":2806,"filename":2807,"language":196,"meta":197,"style":197},"export function createRobustAdapter(config: Config) {\n  return async (ctx: DrainContext) => {\n    // Validate config\n    if (!config.apiKey) {\n      console.error('[adapter] Missing API key, skipping')\n      return\n    }\n\n    const controller = new AbortController()\n    const timeoutId = setTimeout(() => controller.abort(), 5000)\n\n    try {\n      await fetch(config.endpoint, {\n        method: 'POST',\n        body: JSON.stringify(ctx.event),\n        signal: controller.signal,\n      })\n    } catch (error) {\n      // Log but don't throw\n      console.error('[adapter] Failed to send:', error)\n    } finally {\n      clearTimeout(timeoutId)\n    }\n  }\n}\n","lib/robust-adapter.ts",[181,2809,2810,2832,2852,2857,2875,2894,2898,2902,2906,2920,2950,2954,2960,2979,2993,3017,3031,3037,3051,3056,3079,3087,3097,3101,3105],{"__ignoreMap":197},[201,2811,2812,2814,2816,2819,2821,2823,2825,2828,2830],{"class":203,"line":204},[201,2813,208],{"class":207},[201,2815,820],{"class":232},[201,2817,2818],{"class":214}," createRobustAdapter",[201,2820,219],{"class":222},[201,2822,828],{"class":225},[201,2824,340],{"class":222},[201,2826,2827],{"class":453}," Config",[201,2829,229],{"class":222},[201,2831,236],{"class":222},[201,2833,2834,2836,2838,2840,2842,2844,2846,2848,2850],{"class":203,"line":239},[201,2835,896],{"class":207},[201,2837,271],{"class":232},[201,2839,274],{"class":222},[201,2841,277],{"class":225},[201,2843,340],{"class":222},[201,2845,454],{"class":453},[201,2847,229],{"class":222},[201,2849,233],{"class":232},[201,2851,236],{"class":222},[201,2853,2854],{"class":203,"line":286},[201,2855,2856],{"class":289},"    // Validate config\n",[201,2858,2859,2861,2863,2865,2867,2869,2871,2873],{"class":203,"line":293},[201,2860,1767],{"class":207},[201,2862,274],{"class":256},[201,2864,1130],{"class":222},[201,2866,828],{"class":218},[201,2868,245],{"class":222},[201,2870,1060],{"class":218},[201,2872,1141],{"class":256},[201,2874,1144],{"class":222},[201,2876,2877,2879,2881,2883,2885,2887,2890,2892],{"class":203,"line":299},[201,2878,1786],{"class":218},[201,2880,245],{"class":222},[201,2882,628],{"class":214},[201,2884,219],{"class":256},[201,2886,259],{"class":222},[201,2888,2889],{"class":262},"[adapter] Missing API key, skipping",[201,2891,259],{"class":222},[201,2893,419],{"class":256},[201,2895,2896],{"class":203,"line":305},[201,2897,1806],{"class":207},[201,2899,2900],{"class":203,"line":312},[201,2901,1327],{"class":222},[201,2903,2904],{"class":203,"line":334},[201,2905,309],{"emptyLinePlaceholder":308},[201,2907,2908,2910,2912,2914,2916,2918],{"class":203,"line":354},[201,2909,917],{"class":232},[201,2911,920],{"class":218},[201,2913,847],{"class":222},[201,2915,925],{"class":222},[201,2917,928],{"class":214},[201,2919,931],{"class":256},[201,2921,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946,2948],{"class":203,"line":384},[201,2923,917],{"class":232},[201,2925,938],{"class":218},[201,2927,847],{"class":222},[201,2929,943],{"class":214},[201,2931,219],{"class":256},[201,2933,948],{"class":222},[201,2935,233],{"class":232},[201,2937,920],{"class":218},[201,2939,245],{"class":222},[201,2941,957],{"class":214},[201,2943,948],{"class":256},[201,2945,268],{"class":222},[201,2947,2562],{"class":886},[201,2949,419],{"class":256},[201,2951,2952],{"class":203,"line":413},[201,2953,309],{"emptyLinePlaceholder":308},[201,2955,2956,2958],{"class":203,"line":422},[201,2957,974],{"class":207},[201,2959,236],{"class":222},[201,2961,2962,2965,2967,2969,2971,2973,2975,2977],{"class":203,"line":430},[201,2963,2964],{"class":207},"      await",[201,2966,318],{"class":214},[201,2968,219],{"class":256},[201,2970,828],{"class":218},[201,2972,245],{"class":222},[201,2974,855],{"class":218},[201,2976,268],{"class":222},[201,2978,236],{"class":222},[201,2980,2981,2983,2985,2987,2989,2991],{"class":203,"line":559},[201,2982,1004],{"class":256},[201,2984,340],{"class":222},[201,2986,343],{"class":222},[201,2988,346],{"class":262},[201,2990,259],{"class":222},[201,2992,351],{"class":222},[201,2994,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015],{"class":203,"line":565},[201,2996,1072],{"class":256},[201,2998,340],{"class":222},[201,3000,392],{"class":218},[201,3002,245],{"class":222},[201,3004,397],{"class":214},[201,3006,219],{"class":256},[201,3008,277],{"class":218},[201,3010,245],{"class":222},[201,3012,406],{"class":218},[201,3014,229],{"class":256},[201,3016,351],{"class":222},[201,3018,3019,3021,3023,3025,3027,3029],{"class":203,"line":570},[201,3020,1097],{"class":256},[201,3022,340],{"class":222},[201,3024,920],{"class":218},[201,3026,245],{"class":222},[201,3028,1106],{"class":218},[201,3030,351],{"class":222},[201,3032,3033,3035],{"class":203,"line":580},[201,3034,1113],{"class":222},[201,3036,419],{"class":256},[201,3038,3039,3041,3043,3045,3047,3049],{"class":203,"line":590},[201,3040,416],{"class":222},[201,3042,1191],{"class":207},[201,3044,274],{"class":256},[201,3046,628],{"class":218},[201,3048,1141],{"class":256},[201,3050,1144],{"class":222},[201,3052,3053],{"class":203,"line":634},[201,3054,3055],{"class":289},"      // Log but don't throw\n",[201,3057,3058,3060,3062,3064,3066,3068,3071,3073,3075,3077],{"class":203,"line":644},[201,3059,1786],{"class":218},[201,3061,245],{"class":222},[201,3063,628],{"class":214},[201,3065,219],{"class":256},[201,3067,259],{"class":222},[201,3069,3070],{"class":262},"[adapter] Failed to send:",[201,3072,259],{"class":222},[201,3074,268],{"class":222},[201,3076,1220],{"class":218},[201,3078,419],{"class":256},[201,3080,3081,3083,3085],{"class":203,"line":654},[201,3082,416],{"class":222},[201,3084,1306],{"class":207},[201,3086,236],{"class":222},[201,3088,3089,3091,3093,3095],{"class":203,"line":664},[201,3090,1314],{"class":214},[201,3092,219],{"class":256},[201,3094,1319],{"class":218},[201,3096,419],{"class":256},[201,3098,3099],{"class":203,"line":674},[201,3100,1327],{"class":222},[201,3102,3103],{"class":203,"line":684},[201,3104,523],{"class":222},[201,3106,3107],{"class":203,"line":694},[201,3108,562],{"class":222},[186,3110,3112],{"id":3111},"next-steps","Next Steps",[3114,3115,3116,3122,3128,3134],"ul",{},[2775,3117,3118,3121],{},[2441,3119,3120],{"href":67},"Axiom Adapter"," - See a production-ready adapter implementation",[2775,3123,3124,3127],{},[2441,3125,3126],{"href":72},"OTLP Adapter"," - OpenTelemetry Protocol adapter",[2775,3129,3130,3133],{},[2441,3131,3132],{"href":77},"PostHog Adapter"," - PostHog product analytics adapter",[2775,3135,3136,3138],{},[2441,3137,46],{"href":47}," - Security and production tips",[3140,3141,3142],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .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 .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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":197,"searchDepth":239,"depth":239,"links":3144},[3145,3146,3147,3148,3149,3150,3151,3152,3153],{"id":188,"depth":239,"text":189},{"id":438,"depth":239,"text":439},{"id":726,"depth":239,"text":727},{"id":1468,"depth":239,"text":1469},{"id":1830,"depth":239,"text":1831},{"id":2041,"depth":239,"text":2042},{"id":2435,"depth":239,"text":2436},{"id":2769,"depth":239,"text":2770},{"id":3111,"depth":239,"text":3112},"Build your own adapter to send logs to any destination. Factory patterns, batching, filtering, and error handling best practices.","md",[3157,3160],{"label":3120,"icon":69,"to":67,"color":3158,"variant":3159},"neutral","subtle",{"label":46,"icon":49,"to":47,"color":3158,"variant":3159},{},{"icon":94},{"title":91,"description":3154},"UJQ0F-HJLPvKReze1zggAQ9hOqzxD-Wu2wCHHuV0axM",[3166,3168],{"title":86,"path":87,"stem":88,"description":3167,"icon":89,"children":-1},"Send wide events to Better Stack (formerly Logtail) for log management, alerting, and dashboards. Zero-config setup with environment variables.",{"title":96,"path":97,"stem":98,"description":3169,"icon":99,"children":-1},"Batch events, retry on failure, and protect against buffer overflow with the shared drain pipeline. Supports fan-out to multiple adapters.",1772880295750]