[{"data":1,"prerenderedAt":2171},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-installation":49,"-getting-started-installation-surround":2166},[4,27],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting Started","i-lucide-rocket","/getting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","/getting-started/introduction","1.getting-started/1.introduction",{"title":15,"path":16,"stem":17},"Installation","/getting-started/installation","1.getting-started/2.installation",{"title":19,"path":20,"stem":21},"Quick Start","/getting-started/quick-start","1.getting-started/3.quick-start",{"title":23,"path":24,"stem":25},"Agent Skills","/getting-started/agent-skills","1.getting-started/4.agent-skills",false,{"title":28,"icon":29,"items":30,"path":40,"stem":41,"children":42,"page":26},"Core Concepts","i-lucide-book-open",[31,34,37],{"title":32,"path":33},"Wide Events","/core-concepts/wide-events",{"title":35,"path":36},"Structured Errors","/core-concepts/structured-errors",{"title":38,"path":39},"Best Practices","/core-concepts/best-practices","/core-concepts","2.core-concepts",[43,45,47],{"title":32,"path":33,"stem":44},"2.core-concepts/1.wide-events",{"title":35,"path":36,"stem":46},"2.core-concepts/2.structured-errors",{"title":38,"path":39,"stem":48},"2.core-concepts/3.best-practices",{"id":50,"title":15,"body":51,"description":2160,"extension":2161,"links":2162,"meta":2163,"navigation":1874,"path":16,"seo":2164,"stem":17,"__hash__":2165},"docs/1.getting-started/2.installation.md",{"type":52,"value":53,"toc":2148},"minimark",[54,58,63,66,138,145,315,320,493,497,506,656,671,674,677,682,689,830,846,850,857,1016,1023,1027,1034,1209,1232,1236,1247,1434,1440,1466,1663,1670,1674,1676,1726,1733,1777,1781,1783,1833,1836,2115,2122,2126,2129,2133,2137,2144],[55,56,57],"p",{},"evlog supports multiple environments: Nuxt, Nitro, and standalone TypeScript.",[59,60,62],"h2",{"id":61},"nuxt","Nuxt",[55,64,65],{},"Install evlog via your preferred package manager:",[67,68,69,95,110,124],"code-group",{},[70,71,77],"pre",{"className":72,"code":73,"filename":74,"language":75,"meta":76,"style":76},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash","",[78,79,80],"code",{"__ignoreMap":76},[81,82,85,88,92],"span",{"class":83,"line":84},"line",1,[81,86,74],{"class":87},"sBMFI",[81,89,91],{"class":90},"sfazB"," add",[81,93,94],{"class":90}," evlog\n",[70,96,99],{"className":72,"code":97,"filename":98,"language":75,"meta":76,"style":76},"npm install evlog\n","npm",[78,100,101],{"__ignoreMap":76},[81,102,103,105,108],{"class":83,"line":84},[81,104,98],{"class":87},[81,106,107],{"class":90}," install",[81,109,94],{"class":90},[70,111,114],{"className":72,"code":112,"filename":113,"language":75,"meta":76,"style":76},"yarn add evlog\n","yarn",[78,115,116],{"__ignoreMap":76},[81,117,118,120,122],{"class":83,"line":84},[81,119,113],{"class":87},[81,121,91],{"class":90},[81,123,94],{"class":90},[70,125,128],{"className":72,"code":126,"filename":127,"language":75,"meta":76,"style":76},"bun add evlog\n","bun",[78,129,130],{"__ignoreMap":76},[81,131,132,134,136],{"class":83,"line":84},[81,133,127],{"class":87},[81,135,91],{"class":90},[81,137,94],{"class":90},[55,139,140,141,144],{},"Then add it to your Nuxt config using the ",[78,142,143],{},"evlog/nuxt"," module:",[70,146,151],{"className":147,"code":148,"filename":149,"language":150,"meta":76,"style":76},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['evlog/nuxt'],\n  evlog: {\n    env: {\n      service: 'my-app',\n    },\n    // Optional: only log specific routes (supports glob patterns)\n    include: ['/api/**'],\n    // Optional: exclude specific routes from logging\n    exclude: ['/api/_nuxt_icon/**'],\n  },\n})\n","nuxt.config.ts","typescript",[78,152,153,174,200,211,221,239,245,252,273,279,300,306],{"__ignoreMap":76},[81,154,155,159,162,166,170],{"class":83,"line":84},[81,156,158],{"class":157},"s7zQu","export",[81,160,161],{"class":157}," default",[81,163,165],{"class":164},"s2Zo4"," defineNuxtConfig",[81,167,169],{"class":168},"sTEyZ","(",[81,171,173],{"class":172},"sMK4o","{\n",[81,175,177,181,184,187,190,192,194,197],{"class":83,"line":176},2,[81,178,180],{"class":179},"swJcz","  modules",[81,182,183],{"class":172},":",[81,185,186],{"class":168}," [",[81,188,189],{"class":172},"'",[81,191,143],{"class":90},[81,193,189],{"class":172},[81,195,196],{"class":168},"]",[81,198,199],{"class":172},",\n",[81,201,203,206,208],{"class":83,"line":202},3,[81,204,205],{"class":179},"  evlog",[81,207,183],{"class":172},[81,209,210],{"class":172}," {\n",[81,212,214,217,219],{"class":83,"line":213},4,[81,215,216],{"class":179},"    env",[81,218,183],{"class":172},[81,220,210],{"class":172},[81,222,224,227,229,232,235,237],{"class":83,"line":223},5,[81,225,226],{"class":179},"      service",[81,228,183],{"class":172},[81,230,231],{"class":172}," '",[81,233,234],{"class":90},"my-app",[81,236,189],{"class":172},[81,238,199],{"class":172},[81,240,242],{"class":83,"line":241},6,[81,243,244],{"class":172},"    },\n",[81,246,248],{"class":83,"line":247},7,[81,249,251],{"class":250},"sHwdD","    // Optional: only log specific routes (supports glob patterns)\n",[81,253,255,258,260,262,264,267,269,271],{"class":83,"line":254},8,[81,256,257],{"class":179},"    include",[81,259,183],{"class":172},[81,261,186],{"class":168},[81,263,189],{"class":172},[81,265,266],{"class":90},"/api/**",[81,268,189],{"class":172},[81,270,196],{"class":168},[81,272,199],{"class":172},[81,274,276],{"class":83,"line":275},9,[81,277,278],{"class":250},"    // Optional: exclude specific routes from logging\n",[81,280,282,285,287,289,291,294,296,298],{"class":83,"line":281},10,[81,283,284],{"class":179},"    exclude",[81,286,183],{"class":172},[81,288,186],{"class":168},[81,290,189],{"class":172},[81,292,293],{"class":90},"/api/_nuxt_icon/**",[81,295,189],{"class":172},[81,297,196],{"class":168},[81,299,199],{"class":172},[81,301,303],{"class":83,"line":302},11,[81,304,305],{"class":172},"  },\n",[81,307,309,312],{"class":83,"line":308},12,[81,310,311],{"class":172},"}",[81,313,314],{"class":168},")\n",[316,317,319],"h3",{"id":318},"configuration-options","Configuration Options",[321,322,323,342],"table",{},[324,325,326],"thead",{},[327,328,329,333,336,339],"tr",{},[330,331,332],"th",{},"Option",[330,334,335],{},"Type",[330,337,338],{},"Default",[330,340,341],{},"Description",[343,344,345,366,383,406,427,448,472],"tbody",{},[327,346,347,353,358,363],{},[348,349,350],"td",{},[78,351,352],{},"env.service",[348,354,355],{},[78,356,357],{},"string",[348,359,360],{},[78,361,362],{},"'app'",[348,364,365],{},"Service name shown in logs",[327,367,368,373,377,380],{},[348,369,370],{},[78,371,372],{},"env.environment",[348,374,375],{},[78,376,357],{},[348,378,379],{},"Auto-detected",[348,381,382],{},"Environment name",[327,384,385,390,395,400],{},[348,386,387],{},[78,388,389],{},"include",[348,391,392],{},[78,393,394],{},"string[]",[348,396,397],{},[78,398,399],{},"undefined",[348,401,402,403,405],{},"Route patterns to log. Supports glob (",[78,404,266],{},"). If not set, all routes are logged",[327,407,408,413,417,421],{},[348,409,410],{},[78,411,412],{},"exclude",[348,414,415],{},[78,416,394],{},[348,418,419],{},[78,420,399],{},[348,422,423,424,426],{},"Route patterns to exclude from logging. Supports glob (",[78,425,293],{},"). Exclusions take precedence over inclusions",[327,428,429,434,439,445],{},[348,430,431],{},[78,432,433],{},"pretty",[348,435,436],{},[78,437,438],{},"boolean",[348,440,441,444],{},[78,442,443],{},"true"," in dev",[348,446,447],{},"Pretty print with tree formatting",[327,449,450,455,460,464],{},[348,451,452],{},[78,453,454],{},"sampling.rates",[348,456,457],{},[78,458,459],{},"object",[348,461,462],{},[78,463,399],{},[348,465,466,467],{},"Head sampling rates per log level (0-100%). See ",[468,469,471],"a",{"href":470},"#sampling","Sampling",[327,473,474,479,484,488],{},[348,475,476],{},[78,477,478],{},"sampling.keep",[348,480,481],{},[78,482,483],{},"array",[348,485,486],{},[78,487,399],{},[348,489,490,491],{},"Tail sampling conditions to force-keep logs. See ",[468,492,471],{"href":470},[316,494,496],{"id":495},"route-filtering","Route Filtering",[55,498,499,500,502,503,505],{},"Use ",[78,501,389],{}," and ",[78,504,412],{}," to control which routes are logged. Both support glob patterns.",[70,507,509],{"className":147,"code":508,"filename":149,"language":150,"meta":76,"style":76},"export default defineNuxtConfig({\n  modules: ['evlog/nuxt'],\n  evlog: {\n    // Log all API and auth routes...\n    include: ['/api/**', '/auth/**'],\n    // ...except internal/noisy routes\n    exclude: [\n      '/api/_nuxt_icon/**',  // Nuxt Icon requests\n      '/api/_content/**',    // Nuxt Content queries\n      '/api/health',         // Health checks\n    ],\n  },\n})\n",[78,510,511,523,541,549,554,582,587,596,610,624,638,645,649],{"__ignoreMap":76},[81,512,513,515,517,519,521],{"class":83,"line":84},[81,514,158],{"class":157},[81,516,161],{"class":157},[81,518,165],{"class":164},[81,520,169],{"class":168},[81,522,173],{"class":172},[81,524,525,527,529,531,533,535,537,539],{"class":83,"line":176},[81,526,180],{"class":179},[81,528,183],{"class":172},[81,530,186],{"class":168},[81,532,189],{"class":172},[81,534,143],{"class":90},[81,536,189],{"class":172},[81,538,196],{"class":168},[81,540,199],{"class":172},[81,542,543,545,547],{"class":83,"line":202},[81,544,205],{"class":179},[81,546,183],{"class":172},[81,548,210],{"class":172},[81,550,551],{"class":83,"line":213},[81,552,553],{"class":250},"    // Log all API and auth routes...\n",[81,555,556,558,560,562,564,566,568,571,573,576,578,580],{"class":83,"line":223},[81,557,257],{"class":179},[81,559,183],{"class":172},[81,561,186],{"class":168},[81,563,189],{"class":172},[81,565,266],{"class":90},[81,567,189],{"class":172},[81,569,570],{"class":172},",",[81,572,231],{"class":172},[81,574,575],{"class":90},"/auth/**",[81,577,189],{"class":172},[81,579,196],{"class":168},[81,581,199],{"class":172},[81,583,584],{"class":83,"line":241},[81,585,586],{"class":250},"    // ...except internal/noisy routes\n",[81,588,589,591,593],{"class":83,"line":247},[81,590,284],{"class":179},[81,592,183],{"class":172},[81,594,595],{"class":168}," [\n",[81,597,598,601,603,605,607],{"class":83,"line":254},[81,599,600],{"class":172},"      '",[81,602,293],{"class":90},[81,604,189],{"class":172},[81,606,570],{"class":172},[81,608,609],{"class":250},"  // Nuxt Icon requests\n",[81,611,612,614,617,619,621],{"class":83,"line":275},[81,613,600],{"class":172},[81,615,616],{"class":90},"/api/_content/**",[81,618,189],{"class":172},[81,620,570],{"class":172},[81,622,623],{"class":250},"    // Nuxt Content queries\n",[81,625,626,628,631,633,635],{"class":83,"line":281},[81,627,600],{"class":172},[81,629,630],{"class":90},"/api/health",[81,632,189],{"class":172},[81,634,570],{"class":172},[81,636,637],{"class":250},"         // Health checks\n",[81,639,640,643],{"class":83,"line":302},[81,641,642],{"class":168},"    ]",[81,644,199],{"class":172},[81,646,647],{"class":83,"line":308},[81,648,305],{"class":172},[81,650,652,654],{"class":83,"line":651},13,[81,653,311],{"class":172},[81,655,314],{"class":168},[657,658,661,665,666,502,668,670],"callout",{"color":659,"icon":660},"info","i-lucide-info",[662,663,664],"strong",{},"Exclusions take precedence."," If a path matches both ",[78,667,389],{},[78,669,412],{},", it will be excluded.",[316,672,471],{"id":673},"sampling",[55,675,676],{},"At scale, logging everything can become expensive. evlog supports two sampling strategies:",[678,679,681],"h4",{"id":680},"head-sampling-rates","Head Sampling (rates)",[55,683,684,685,688],{},"Random sampling based on log level, decided ",[662,686,687],{},"before"," the request completes:",[70,690,692],{"className":147,"code":691,"filename":149,"language":150,"meta":76,"style":76},"export default defineNuxtConfig({\n  modules: ['evlog/nuxt'],\n  evlog: {\n    sampling: {\n      rates: {\n        info: 10,    // Keep 10% of info logs\n        warn: 50,    // Keep 50% of warning logs\n        debug: 5,    // Keep 5% of debug logs\n        error: 100,  // Always keep errors (default)\n      },\n    },\n  },\n})\n",[78,693,694,706,724,732,741,750,766,781,796,811,816,820,824],{"__ignoreMap":76},[81,695,696,698,700,702,704],{"class":83,"line":84},[81,697,158],{"class":157},[81,699,161],{"class":157},[81,701,165],{"class":164},[81,703,169],{"class":168},[81,705,173],{"class":172},[81,707,708,710,712,714,716,718,720,722],{"class":83,"line":176},[81,709,180],{"class":179},[81,711,183],{"class":172},[81,713,186],{"class":168},[81,715,189],{"class":172},[81,717,143],{"class":90},[81,719,189],{"class":172},[81,721,196],{"class":168},[81,723,199],{"class":172},[81,725,726,728,730],{"class":83,"line":202},[81,727,205],{"class":179},[81,729,183],{"class":172},[81,731,210],{"class":172},[81,733,734,737,739],{"class":83,"line":213},[81,735,736],{"class":179},"    sampling",[81,738,183],{"class":172},[81,740,210],{"class":172},[81,742,743,746,748],{"class":83,"line":223},[81,744,745],{"class":179},"      rates",[81,747,183],{"class":172},[81,749,210],{"class":172},[81,751,752,755,757,761,763],{"class":83,"line":241},[81,753,754],{"class":179},"        info",[81,756,183],{"class":172},[81,758,760],{"class":759},"sbssI"," 10",[81,762,570],{"class":172},[81,764,765],{"class":250},"    // Keep 10% of info logs\n",[81,767,768,771,773,776,778],{"class":83,"line":247},[81,769,770],{"class":179},"        warn",[81,772,183],{"class":172},[81,774,775],{"class":759}," 50",[81,777,570],{"class":172},[81,779,780],{"class":250},"    // Keep 50% of warning logs\n",[81,782,783,786,788,791,793],{"class":83,"line":254},[81,784,785],{"class":179},"        debug",[81,787,183],{"class":172},[81,789,790],{"class":759}," 5",[81,792,570],{"class":172},[81,794,795],{"class":250},"    // Keep 5% of debug logs\n",[81,797,798,801,803,806,808],{"class":83,"line":275},[81,799,800],{"class":179},"        error",[81,802,183],{"class":172},[81,804,805],{"class":759}," 100",[81,807,570],{"class":172},[81,809,810],{"class":250},"  // Always keep errors (default)\n",[81,812,813],{"class":83,"line":281},[81,814,815],{"class":172},"      },\n",[81,817,818],{"class":83,"line":302},[81,819,244],{"class":172},[81,821,822],{"class":83,"line":308},[81,823,305],{"class":172},[81,825,826,828],{"class":83,"line":651},[81,827,311],{"class":172},[81,829,314],{"class":168},[657,831,834,837,838,841,842,845],{"color":832,"icon":833},"success","i-lucide-shield-check",[662,835,836],{},"Errors are always logged by default."," Even if you don't specify ",[78,839,840],{},"error: 100",", error logs are never sampled out unless you explicitly set ",[78,843,844],{},"error: 0",".",[678,847,849],{"id":848},"tail-sampling-keep","Tail Sampling (keep)",[55,851,852,853,856],{},"Force-keep logs based on request outcome, evaluated ",[662,854,855],{},"after"," the request completes. Useful to always capture slow requests or critical paths even when head sampling would drop them:",[70,858,860],{"className":147,"code":859,"filename":149,"language":150,"meta":76,"style":76},"export default defineNuxtConfig({\n  modules: ['evlog/nuxt'],\n  evlog: {\n    sampling: {\n      rates: { info: 10 },  // Only 10% of info logs\n      keep: [\n        { duration: 1000 },           // Always keep if duration >= 1000ms\n        { status: 400 },              // Always keep if status >= 400\n        { path: '/api/critical/**' }, // Always keep critical paths\n      ],\n    },\n  },\n})\n",[78,861,862,874,892,900,908,930,939,957,974,995,1002,1006,1010],{"__ignoreMap":76},[81,863,864,866,868,870,872],{"class":83,"line":84},[81,865,158],{"class":157},[81,867,161],{"class":157},[81,869,165],{"class":164},[81,871,169],{"class":168},[81,873,173],{"class":172},[81,875,876,878,880,882,884,886,888,890],{"class":83,"line":176},[81,877,180],{"class":179},[81,879,183],{"class":172},[81,881,186],{"class":168},[81,883,189],{"class":172},[81,885,143],{"class":90},[81,887,189],{"class":172},[81,889,196],{"class":168},[81,891,199],{"class":172},[81,893,894,896,898],{"class":83,"line":202},[81,895,205],{"class":179},[81,897,183],{"class":172},[81,899,210],{"class":172},[81,901,902,904,906],{"class":83,"line":213},[81,903,736],{"class":179},[81,905,183],{"class":172},[81,907,210],{"class":172},[81,909,910,912,914,917,920,922,924,927],{"class":83,"line":223},[81,911,745],{"class":179},[81,913,183],{"class":172},[81,915,916],{"class":172}," {",[81,918,919],{"class":179}," info",[81,921,183],{"class":172},[81,923,760],{"class":759},[81,925,926],{"class":172}," },",[81,928,929],{"class":250},"  // Only 10% of info logs\n",[81,931,932,935,937],{"class":83,"line":241},[81,933,934],{"class":179},"      keep",[81,936,183],{"class":172},[81,938,595],{"class":168},[81,940,941,944,947,949,952,954],{"class":83,"line":247},[81,942,943],{"class":172},"        {",[81,945,946],{"class":179}," duration",[81,948,183],{"class":172},[81,950,951],{"class":759}," 1000",[81,953,926],{"class":172},[81,955,956],{"class":250},"           // Always keep if duration >= 1000ms\n",[81,958,959,961,964,966,969,971],{"class":83,"line":254},[81,960,943],{"class":172},[81,962,963],{"class":179}," status",[81,965,183],{"class":172},[81,967,968],{"class":759}," 400",[81,970,926],{"class":172},[81,972,973],{"class":250},"              // Always keep if status >= 400\n",[81,975,976,978,981,983,985,988,990,992],{"class":83,"line":275},[81,977,943],{"class":172},[81,979,980],{"class":179}," path",[81,982,183],{"class":172},[81,984,231],{"class":172},[81,986,987],{"class":90},"/api/critical/**",[81,989,189],{"class":172},[81,991,926],{"class":172},[81,993,994],{"class":250}," // Always keep critical paths\n",[81,996,997,1000],{"class":83,"line":281},[81,998,999],{"class":168},"      ]",[81,1001,199],{"class":172},[81,1003,1004],{"class":83,"line":302},[81,1005,244],{"class":172},[81,1007,1008],{"class":83,"line":308},[81,1009,305],{"class":172},[81,1011,1012,1014],{"class":83,"line":651},[81,1013,311],{"class":172},[81,1015,314],{"class":168},[55,1017,1018,1019,1022],{},"Conditions use ",[78,1020,1021],{},">="," comparison and follow OR logic (any match = keep).",[678,1024,1026],{"id":1025},"custom-tail-sampling-hook","Custom Tail Sampling Hook",[55,1028,1029,1030,1033],{},"For business-specific conditions (premium users, feature flags, etc.), use the ",[78,1031,1032],{},"evlog:emit:keep"," Nitro hook:",[70,1035,1038],{"className":147,"code":1036,"filename":1037,"language":150,"meta":76,"style":76},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:emit:keep', (ctx) => {\n    // Always keep logs for premium users\n    const user = ctx.context.user as { premium?: boolean } | undefined\n    if (user?.premium) {\n      ctx.shouldKeep = true\n    }\n  })\n})\n","server/plugins/evlog-custom.ts",[78,1039,1040,1066,1103,1108,1155,1175,1191,1196,1203],{"__ignoreMap":76},[81,1041,1042,1044,1046,1049,1051,1053,1057,1060,1064],{"class":83,"line":84},[81,1043,158],{"class":157},[81,1045,161],{"class":157},[81,1047,1048],{"class":164}," defineNitroPlugin",[81,1050,169],{"class":168},[81,1052,169],{"class":172},[81,1054,1056],{"class":1055},"sHdIc","nitroApp",[81,1058,1059],{"class":172},")",[81,1061,1063],{"class":1062},"spNyl"," =>",[81,1065,210],{"class":172},[81,1067,1068,1071,1073,1076,1078,1081,1083,1085,1087,1089,1091,1094,1097,1099,1101],{"class":83,"line":176},[81,1069,1070],{"class":168},"  nitroApp",[81,1072,845],{"class":172},[81,1074,1075],{"class":168},"hooks",[81,1077,845],{"class":172},[81,1079,1080],{"class":164},"hook",[81,1082,169],{"class":179},[81,1084,189],{"class":172},[81,1086,1032],{"class":90},[81,1088,189],{"class":172},[81,1090,570],{"class":172},[81,1092,1093],{"class":172}," (",[81,1095,1096],{"class":1055},"ctx",[81,1098,1059],{"class":172},[81,1100,1063],{"class":1062},[81,1102,210],{"class":172},[81,1104,1105],{"class":83,"line":202},[81,1106,1107],{"class":250},"    // Always keep logs for premium users\n",[81,1109,1110,1113,1116,1119,1122,1124,1127,1129,1132,1135,1137,1140,1143,1146,1149,1152],{"class":83,"line":213},[81,1111,1112],{"class":1062},"    const",[81,1114,1115],{"class":168}," user",[81,1117,1118],{"class":172}," =",[81,1120,1121],{"class":168}," ctx",[81,1123,845],{"class":172},[81,1125,1126],{"class":168},"context",[81,1128,845],{"class":172},[81,1130,1131],{"class":168},"user",[81,1133,1134],{"class":157}," as",[81,1136,916],{"class":172},[81,1138,1139],{"class":179}," premium",[81,1141,1142],{"class":172},"?:",[81,1144,1145],{"class":87}," boolean",[81,1147,1148],{"class":172}," }",[81,1150,1151],{"class":172}," |",[81,1153,1154],{"class":87}," undefined\n",[81,1156,1157,1160,1162,1164,1167,1170,1173],{"class":83,"line":223},[81,1158,1159],{"class":157},"    if",[81,1161,1093],{"class":179},[81,1163,1131],{"class":168},[81,1165,1166],{"class":172},"?.",[81,1168,1169],{"class":168},"premium",[81,1171,1172],{"class":179},") ",[81,1174,173],{"class":172},[81,1176,1177,1180,1182,1185,1187],{"class":83,"line":241},[81,1178,1179],{"class":168},"      ctx",[81,1181,845],{"class":172},[81,1183,1184],{"class":168},"shouldKeep",[81,1186,1118],{"class":172},[81,1188,1190],{"class":1189},"sfNiH"," true\n",[81,1192,1193],{"class":83,"line":247},[81,1194,1195],{"class":172},"    }\n",[81,1197,1198,1201],{"class":83,"line":254},[81,1199,1200],{"class":172},"  }",[81,1202,314],{"class":179},[81,1204,1205,1207],{"class":83,"line":275},[81,1206,311],{"class":172},[81,1208,314],{"class":168},[55,1210,1211,1212,1215,1216,1219,1220,1219,1223,1219,1226,1229,1230,845],{},"The hook receives a ",[78,1213,1214],{},"TailSamplingContext"," with ",[78,1217,1218],{},"status",", ",[78,1221,1222],{},"duration",[78,1224,1225],{},"path",[78,1227,1228],{},"method",", and the full accumulated ",[78,1231,1126],{},[316,1233,1235],{"id":1234},"log-draining","Log Draining",[55,1237,1238,1239,1242,1243,1246],{},"Send logs to external services like Axiom, Loki, or custom endpoints using the ",[78,1240,1241],{},"evlog:drain"," hook. The hook is called in ",[662,1244,1245],{},"fire-and-forget"," mode, meaning it never blocks the HTTP response.",[70,1248,1251],{"className":147,"code":1249,"filename":1250,"language":150,"meta":76,"style":76},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', async (ctx) => {\n    await fetch('https://api.axiom.co/v1/datasets/logs/ingest', {\n      method: 'POST',\n      headers: { Authorization: `Bearer ${process.env.AXIOM_TOKEN}` },\n      body: JSON.stringify([ctx.event])\n    })\n  })\n})\n","server/plugins/evlog-axiom.ts",[78,1252,1253,1273,1308,1329,1345,1387,1415,1422,1428],{"__ignoreMap":76},[81,1254,1255,1257,1259,1261,1263,1265,1267,1269,1271],{"class":83,"line":84},[81,1256,158],{"class":157},[81,1258,161],{"class":157},[81,1260,1048],{"class":164},[81,1262,169],{"class":168},[81,1264,169],{"class":172},[81,1266,1056],{"class":1055},[81,1268,1059],{"class":172},[81,1270,1063],{"class":1062},[81,1272,210],{"class":172},[81,1274,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1298,1300,1302,1304,1306],{"class":83,"line":176},[81,1276,1070],{"class":168},[81,1278,845],{"class":172},[81,1280,1075],{"class":168},[81,1282,845],{"class":172},[81,1284,1080],{"class":164},[81,1286,169],{"class":179},[81,1288,189],{"class":172},[81,1290,1241],{"class":90},[81,1292,189],{"class":172},[81,1294,570],{"class":172},[81,1296,1297],{"class":1062}," async",[81,1299,1093],{"class":172},[81,1301,1096],{"class":1055},[81,1303,1059],{"class":172},[81,1305,1063],{"class":1062},[81,1307,210],{"class":172},[81,1309,1310,1313,1316,1318,1320,1323,1325,1327],{"class":83,"line":202},[81,1311,1312],{"class":157},"    await",[81,1314,1315],{"class":164}," fetch",[81,1317,169],{"class":179},[81,1319,189],{"class":172},[81,1321,1322],{"class":90},"https://api.axiom.co/v1/datasets/logs/ingest",[81,1324,189],{"class":172},[81,1326,570],{"class":172},[81,1328,210],{"class":172},[81,1330,1331,1334,1336,1338,1341,1343],{"class":83,"line":213},[81,1332,1333],{"class":179},"      method",[81,1335,183],{"class":172},[81,1337,231],{"class":172},[81,1339,1340],{"class":90},"POST",[81,1342,189],{"class":172},[81,1344,199],{"class":172},[81,1346,1347,1350,1352,1354,1357,1359,1362,1365,1368,1371,1373,1376,1378,1381,1384],{"class":83,"line":223},[81,1348,1349],{"class":179},"      headers",[81,1351,183],{"class":172},[81,1353,916],{"class":172},[81,1355,1356],{"class":179}," Authorization",[81,1358,183],{"class":172},[81,1360,1361],{"class":172}," `",[81,1363,1364],{"class":90},"Bearer ",[81,1366,1367],{"class":172},"${",[81,1369,1370],{"class":168},"process",[81,1372,845],{"class":172},[81,1374,1375],{"class":168},"env",[81,1377,845],{"class":172},[81,1379,1380],{"class":168},"AXIOM_TOKEN",[81,1382,1383],{"class":172},"}`",[81,1385,1386],{"class":172}," },\n",[81,1388,1389,1392,1394,1397,1399,1402,1405,1407,1409,1412],{"class":83,"line":241},[81,1390,1391],{"class":179},"      body",[81,1393,183],{"class":172},[81,1395,1396],{"class":168}," JSON",[81,1398,845],{"class":172},[81,1400,1401],{"class":164},"stringify",[81,1403,1404],{"class":179},"([",[81,1406,1096],{"class":168},[81,1408,845],{"class":172},[81,1410,1411],{"class":168},"event",[81,1413,1414],{"class":179},"])\n",[81,1416,1417,1420],{"class":83,"line":247},[81,1418,1419],{"class":172},"    }",[81,1421,314],{"class":179},[81,1423,1424,1426],{"class":83,"line":254},[81,1425,1200],{"class":172},[81,1427,314],{"class":179},[81,1429,1430,1432],{"class":83,"line":275},[81,1431,311],{"class":172},[81,1433,314],{"class":168},[55,1435,1211,1436,1439],{},[78,1437,1438],{},"DrainContext"," with:",[1441,1442,1443,1453],"ul",{},[1444,1445,1446,1448,1449,1452],"li",{},[78,1447,1411],{},": The complete ",[78,1450,1451],{},"WideEvent"," (timestamp, level, service, and all accumulated context)",[1444,1454,1455,1458,1459,1219,1461,1219,1463,1059],{},[78,1456,1457],{},"request",": Optional request metadata (",[78,1460,1228],{},[78,1462,1225],{},[78,1464,1465],{},"requestId",[657,1467,1469,1479],{"color":659,"icon":1468},"i-lucide-lightbulb",[55,1470,1471,1474,1475,1478],{},[662,1472,1473],{},"Tip:"," Use Nuxt's ",[78,1476,1477],{},"$production"," override to sample only in production while keeping full visibility in development:",[70,1480,1482],{"className":147,"code":1481,"language":150,"meta":76,"style":76},"export default defineNuxtConfig({\n  modules: ['evlog/nuxt'],\n  evlog: {\n    env: { service: 'my-app' },\n  },\n  $production: {\n    evlog: {\n      sampling: {\n        rates: { info: 10, warn: 50, debug: 0 },\n        keep: [{ duration: 1000 }, { status: 400 }],\n      },\n    },\n  },\n})\n",[78,1483,1484,1496,1514,1522,1543,1547,1556,1565,1574,1610,1644,1648,1652,1656],{"__ignoreMap":76},[81,1485,1486,1488,1490,1492,1494],{"class":83,"line":84},[81,1487,158],{"class":157},[81,1489,161],{"class":157},[81,1491,165],{"class":164},[81,1493,169],{"class":168},[81,1495,173],{"class":172},[81,1497,1498,1500,1502,1504,1506,1508,1510,1512],{"class":83,"line":176},[81,1499,180],{"class":179},[81,1501,183],{"class":172},[81,1503,186],{"class":168},[81,1505,189],{"class":172},[81,1507,143],{"class":90},[81,1509,189],{"class":172},[81,1511,196],{"class":168},[81,1513,199],{"class":172},[81,1515,1516,1518,1520],{"class":83,"line":202},[81,1517,205],{"class":179},[81,1519,183],{"class":172},[81,1521,210],{"class":172},[81,1523,1524,1526,1528,1530,1533,1535,1537,1539,1541],{"class":83,"line":213},[81,1525,216],{"class":179},[81,1527,183],{"class":172},[81,1529,916],{"class":172},[81,1531,1532],{"class":179}," service",[81,1534,183],{"class":172},[81,1536,231],{"class":172},[81,1538,234],{"class":90},[81,1540,189],{"class":172},[81,1542,1386],{"class":172},[81,1544,1545],{"class":83,"line":223},[81,1546,305],{"class":172},[81,1548,1549,1552,1554],{"class":83,"line":241},[81,1550,1551],{"class":179},"  $production",[81,1553,183],{"class":172},[81,1555,210],{"class":172},[81,1557,1558,1561,1563],{"class":83,"line":247},[81,1559,1560],{"class":179},"    evlog",[81,1562,183],{"class":172},[81,1564,210],{"class":172},[81,1566,1567,1570,1572],{"class":83,"line":254},[81,1568,1569],{"class":179},"      sampling",[81,1571,183],{"class":172},[81,1573,210],{"class":172},[81,1575,1576,1579,1581,1583,1585,1587,1589,1591,1594,1596,1598,1600,1603,1605,1608],{"class":83,"line":275},[81,1577,1578],{"class":179},"        rates",[81,1580,183],{"class":172},[81,1582,916],{"class":172},[81,1584,919],{"class":179},[81,1586,183],{"class":172},[81,1588,760],{"class":759},[81,1590,570],{"class":172},[81,1592,1593],{"class":179}," warn",[81,1595,183],{"class":172},[81,1597,775],{"class":759},[81,1599,570],{"class":172},[81,1601,1602],{"class":179}," debug",[81,1604,183],{"class":172},[81,1606,1607],{"class":759}," 0",[81,1609,1386],{"class":172},[81,1611,1612,1615,1617,1619,1622,1624,1626,1628,1630,1632,1634,1636,1638,1640,1642],{"class":83,"line":281},[81,1613,1614],{"class":179},"        keep",[81,1616,183],{"class":172},[81,1618,186],{"class":168},[81,1620,1621],{"class":172},"{",[81,1623,946],{"class":179},[81,1625,183],{"class":172},[81,1627,951],{"class":759},[81,1629,926],{"class":172},[81,1631,916],{"class":172},[81,1633,963],{"class":179},[81,1635,183],{"class":172},[81,1637,968],{"class":759},[81,1639,1148],{"class":172},[81,1641,196],{"class":168},[81,1643,199],{"class":172},[81,1645,1646],{"class":83,"line":302},[81,1647,815],{"class":172},[81,1649,1650],{"class":83,"line":308},[81,1651,244],{"class":172},[81,1653,1654],{"class":83,"line":651},[81,1655,305],{"class":172},[81,1657,1659,1661],{"class":83,"line":1658},14,[81,1660,311],{"class":172},[81,1662,314],{"class":168},[55,1664,1665,1666,1669],{},"That's it! You can now use ",[78,1667,1668],{},"useLogger(event)"," in any API route.",[59,1671,1673],{"id":1672},"nitro","Nitro",[55,1675,65],{},[67,1677,1678,1690,1702,1714],{},[70,1679,1680],{"className":72,"code":73,"filename":74,"language":75,"meta":76,"style":76},[78,1681,1682],{"__ignoreMap":76},[81,1683,1684,1686,1688],{"class":83,"line":84},[81,1685,74],{"class":87},[81,1687,91],{"class":90},[81,1689,94],{"class":90},[70,1691,1692],{"className":72,"code":97,"filename":98,"language":75,"meta":76,"style":76},[78,1693,1694],{"__ignoreMap":76},[81,1695,1696,1698,1700],{"class":83,"line":84},[81,1697,98],{"class":87},[81,1699,107],{"class":90},[81,1701,94],{"class":90},[70,1703,1704],{"className":72,"code":112,"filename":113,"language":75,"meta":76,"style":76},[78,1705,1706],{"__ignoreMap":76},[81,1707,1708,1710,1712],{"class":83,"line":84},[81,1709,113],{"class":87},[81,1711,91],{"class":90},[81,1713,94],{"class":90},[70,1715,1716],{"className":72,"code":126,"filename":127,"language":75,"meta":76,"style":76},[78,1717,1718],{"__ignoreMap":76},[81,1719,1720,1722,1724],{"class":83,"line":84},[81,1721,127],{"class":87},[81,1723,91],{"class":90},[81,1725,94],{"class":90},[55,1727,1728,1729,1732],{},"Then, add evlog as a Nitro plugin (without Nuxt) using the ",[78,1730,1731],{},"evlog/nitro"," plugin:",[70,1734,1737],{"className":147,"code":1735,"filename":1736,"language":150,"meta":76,"style":76},"export default defineNitroConfig({\n  plugins: ['evlog/nitro'],\n})\n","nitro.config.ts",[78,1738,1739,1752,1771],{"__ignoreMap":76},[81,1740,1741,1743,1745,1748,1750],{"class":83,"line":84},[81,1742,158],{"class":157},[81,1744,161],{"class":157},[81,1746,1747],{"class":164}," defineNitroConfig",[81,1749,169],{"class":168},[81,1751,173],{"class":172},[81,1753,1754,1757,1759,1761,1763,1765,1767,1769],{"class":83,"line":176},[81,1755,1756],{"class":179},"  plugins",[81,1758,183],{"class":172},[81,1760,186],{"class":168},[81,1762,189],{"class":172},[81,1764,1731],{"class":90},[81,1766,189],{"class":172},[81,1768,196],{"class":168},[81,1770,199],{"class":172},[81,1772,1773,1775],{"class":83,"line":202},[81,1774,311],{"class":172},[81,1776,314],{"class":168},[59,1778,1780],{"id":1779},"standalone-typescript","Standalone TypeScript",[55,1782,65],{},[67,1784,1785,1797,1809,1821],{},[70,1786,1787],{"className":72,"code":73,"filename":74,"language":75,"meta":76,"style":76},[78,1788,1789],{"__ignoreMap":76},[81,1790,1791,1793,1795],{"class":83,"line":84},[81,1792,74],{"class":87},[81,1794,91],{"class":90},[81,1796,94],{"class":90},[70,1798,1799],{"className":72,"code":97,"filename":98,"language":75,"meta":76,"style":76},[78,1800,1801],{"__ignoreMap":76},[81,1802,1803,1805,1807],{"class":83,"line":84},[81,1804,98],{"class":87},[81,1806,107],{"class":90},[81,1808,94],{"class":90},[70,1810,1811],{"className":72,"code":112,"filename":113,"language":75,"meta":76,"style":76},[78,1812,1813],{"__ignoreMap":76},[81,1814,1815,1817,1819],{"class":83,"line":84},[81,1816,113],{"class":87},[81,1818,91],{"class":90},[81,1820,94],{"class":90},[70,1822,1823],{"className":72,"code":126,"filename":127,"language":75,"meta":76,"style":76},[78,1824,1825],{"__ignoreMap":76},[81,1826,1827,1829,1831],{"class":83,"line":84},[81,1828,127],{"class":87},[81,1830,91],{"class":90},[81,1832,94],{"class":90},[55,1834,1835],{},"Then, use it as any other TypeScript library within your scripts, CLI tools, workers, or apps:",[70,1837,1840],{"className":147,"code":1838,"filename":1839,"language":150,"meta":76,"style":76},"import { initLogger, createRequestLogger } from 'evlog'\n\n// Initialize once at startup\ninitLogger({\n  env: {\n    service: 'my-worker',\n    environment: 'production',\n  },\n  // Optional: sample logs\n  sampling: {\n    rates: { info: 10, debug: 5 },\n  },\n})\n\n// Create a logger for each operation\nconst log = createRequestLogger({ jobId: job.id })\nlog.set({ source: job.source, target: job.target })\nlog.set({ recordsSynced: 150 })\nlog.emit() // Manual emit required in standalone mode\n","scripts/sync-job.ts",[78,1841,1842,1870,1876,1881,1890,1899,1915,1931,1935,1940,1949,1974,1978,1984,1988,1994,2029,2074,2099],{"__ignoreMap":76},[81,1843,1844,1847,1849,1852,1854,1857,1859,1862,1864,1867],{"class":83,"line":84},[81,1845,1846],{"class":157},"import",[81,1848,916],{"class":172},[81,1850,1851],{"class":168}," initLogger",[81,1853,570],{"class":172},[81,1855,1856],{"class":168}," createRequestLogger",[81,1858,1148],{"class":172},[81,1860,1861],{"class":157}," from",[81,1863,231],{"class":172},[81,1865,1866],{"class":90},"evlog",[81,1868,1869],{"class":172},"'\n",[81,1871,1872],{"class":83,"line":176},[81,1873,1875],{"emptyLinePlaceholder":1874},true,"\n",[81,1877,1878],{"class":83,"line":202},[81,1879,1880],{"class":250},"// Initialize once at startup\n",[81,1882,1883,1886,1888],{"class":83,"line":213},[81,1884,1885],{"class":164},"initLogger",[81,1887,169],{"class":168},[81,1889,173],{"class":172},[81,1891,1892,1895,1897],{"class":83,"line":223},[81,1893,1894],{"class":179},"  env",[81,1896,183],{"class":172},[81,1898,210],{"class":172},[81,1900,1901,1904,1906,1908,1911,1913],{"class":83,"line":241},[81,1902,1903],{"class":179},"    service",[81,1905,183],{"class":172},[81,1907,231],{"class":172},[81,1909,1910],{"class":90},"my-worker",[81,1912,189],{"class":172},[81,1914,199],{"class":172},[81,1916,1917,1920,1922,1924,1927,1929],{"class":83,"line":247},[81,1918,1919],{"class":179},"    environment",[81,1921,183],{"class":172},[81,1923,231],{"class":172},[81,1925,1926],{"class":90},"production",[81,1928,189],{"class":172},[81,1930,199],{"class":172},[81,1932,1933],{"class":83,"line":254},[81,1934,305],{"class":172},[81,1936,1937],{"class":83,"line":275},[81,1938,1939],{"class":250},"  // Optional: sample logs\n",[81,1941,1942,1945,1947],{"class":83,"line":281},[81,1943,1944],{"class":179},"  sampling",[81,1946,183],{"class":172},[81,1948,210],{"class":172},[81,1950,1951,1954,1956,1958,1960,1962,1964,1966,1968,1970,1972],{"class":83,"line":302},[81,1952,1953],{"class":179},"    rates",[81,1955,183],{"class":172},[81,1957,916],{"class":172},[81,1959,919],{"class":179},[81,1961,183],{"class":172},[81,1963,760],{"class":759},[81,1965,570],{"class":172},[81,1967,1602],{"class":179},[81,1969,183],{"class":172},[81,1971,790],{"class":759},[81,1973,1386],{"class":172},[81,1975,1976],{"class":83,"line":308},[81,1977,305],{"class":172},[81,1979,1980,1982],{"class":83,"line":651},[81,1981,311],{"class":172},[81,1983,314],{"class":168},[81,1985,1986],{"class":83,"line":1658},[81,1987,1875],{"emptyLinePlaceholder":1874},[81,1989,1991],{"class":83,"line":1990},15,[81,1992,1993],{"class":250},"// Create a logger for each operation\n",[81,1995,1997,2000,2003,2006,2008,2010,2012,2015,2017,2020,2022,2025,2027],{"class":83,"line":1996},16,[81,1998,1999],{"class":1062},"const",[81,2001,2002],{"class":168}," log ",[81,2004,2005],{"class":172},"=",[81,2007,1856],{"class":164},[81,2009,169],{"class":168},[81,2011,1621],{"class":172},[81,2013,2014],{"class":179}," jobId",[81,2016,183],{"class":172},[81,2018,2019],{"class":168}," job",[81,2021,845],{"class":172},[81,2023,2024],{"class":168},"id ",[81,2026,311],{"class":172},[81,2028,314],{"class":168},[81,2030,2032,2035,2037,2040,2042,2044,2047,2049,2051,2053,2056,2058,2061,2063,2065,2067,2070,2072],{"class":83,"line":2031},17,[81,2033,2034],{"class":168},"log",[81,2036,845],{"class":172},[81,2038,2039],{"class":164},"set",[81,2041,169],{"class":168},[81,2043,1621],{"class":172},[81,2045,2046],{"class":179}," source",[81,2048,183],{"class":172},[81,2050,2019],{"class":168},[81,2052,845],{"class":172},[81,2054,2055],{"class":168},"source",[81,2057,570],{"class":172},[81,2059,2060],{"class":179}," target",[81,2062,183],{"class":172},[81,2064,2019],{"class":168},[81,2066,845],{"class":172},[81,2068,2069],{"class":168},"target ",[81,2071,311],{"class":172},[81,2073,314],{"class":168},[81,2075,2077,2079,2081,2083,2085,2087,2090,2092,2095,2097],{"class":83,"line":2076},18,[81,2078,2034],{"class":168},[81,2080,845],{"class":172},[81,2082,2039],{"class":164},[81,2084,169],{"class":168},[81,2086,1621],{"class":172},[81,2088,2089],{"class":179}," recordsSynced",[81,2091,183],{"class":172},[81,2093,2094],{"class":759}," 150",[81,2096,1148],{"class":172},[81,2098,314],{"class":168},[81,2100,2102,2104,2106,2109,2112],{"class":83,"line":2101},19,[81,2103,2034],{"class":168},[81,2105,845],{"class":172},[81,2107,2108],{"class":164},"emit",[81,2110,2111],{"class":168},"() ",[81,2113,2114],{"class":250},"// Manual emit required in standalone mode\n",[657,2116,2117,2118,2121],{"color":659,"icon":660},"In standalone mode, you must call ",[78,2119,2120],{},"log.emit()"," manually. In Nuxt/Nitro, this happens automatically at request end.",[59,2123,2125],{"id":2124},"typescript-configuration","TypeScript Configuration",[55,2127,2128],{},"evlog is written in TypeScript and ships with full type definitions. No additional configuration is required.",[657,2130,2132],{"color":832,"icon":2131},"i-lucide-check","evlog requires TypeScript 5.0 or higher for optimal type inference.",[59,2134,2136],{"id":2135},"next-steps","Next Steps",[1441,2138,2139],{},[1444,2140,2141,2143],{},[468,2142,19],{"href":20}," - Learn the core concepts and start using evlog",[2145,2146,2147],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":76,"searchDepth":176,"depth":176,"links":2149},[2150,2156,2157,2158,2159],{"id":61,"depth":176,"text":62,"children":2151},[2152,2153,2154,2155],{"id":318,"depth":202,"text":319},{"id":495,"depth":202,"text":496},{"id":673,"depth":202,"text":471},{"id":1234,"depth":202,"text":1235},{"id":1672,"depth":176,"text":1673},{"id":1779,"depth":176,"text":1780},{"id":2124,"depth":176,"text":2125},{"id":2135,"depth":176,"text":2136},"Install evlog in your Nuxt, Nitro, or standalone TypeScript project.","md",null,{},{"title":15,"description":2160},"7PIVk3xFG4-GMFspCduAUeaU-QOFjtFY7WYorOCJPL8",[2167,2169],{"title":11,"path":12,"stem":13,"description":2168,"children":-1},"A TypeScript logging library focused on wide events and structured error handling.",{"title":19,"path":20,"stem":21,"description":2170,"children":-1},"Get up and running with evlog in minutes.",1769868128710]