[{"data":1,"prerenderedAt":2345},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-quick-start":49,"-getting-started-quick-start-surround":2340},[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":19,"body":51,"description":2334,"extension":2335,"links":2336,"meta":2337,"navigation":185,"path":20,"seo":2338,"stem":21,"__hash__":2339},"docs/1.getting-started/3.quick-start.md",{"type":52,"value":53,"toc":2321},"minimark",[54,58,84,89,96,474,483,488,534,538,544,808,812,899,903,909,1282,1286,1289,1444,1455,1459,1465,1856,1859,1867,1874,1878,1881,2293,2297,2317],[55,56,57],"p",{},"This guide covers the core APIs you'll use most often with evlog.",[59,60,63,64,68,69,68,72,68,75,78,79,83],"callout",{"color":61,"icon":62},"info","i-lucide-sparkles","In Nuxt, all evlog functions (",[65,66,67],"code",{},"useLogger",", ",[65,70,71],{},"log",[65,73,74],{},"createError",[65,76,77],{},"parseError",") are ",[80,81,82],"strong",{},"auto-imported",". No import statements needed.",[85,86,88],"h2",{"id":87},"uselogger-server-side","useLogger (Server-Side)",[55,90,91,92,95],{},"Use ",[65,93,94],{},"useLogger(event)"," in any Nuxt/Nitro API route to get a request-scoped logger:",[97,98,99,407],"code-group",{},[100,101,107],"pre",{"className":102,"code":103,"filename":104,"language":105,"meta":106,"style":106},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineEventHandler(async (event) => {\n  // Get the request-scoped logger (auto-imported in Nuxt)\n  const log = useLogger(event)\n\n  // Accumulate context throughout the request\n  log.set({ user: { id: 1, plan: 'pro' } })\n  log.set({ cart: { items: 3, total: 9999 } })\n\n  // Process checkout...\n  const order = await processCheckout()\n  log.set({ orderId: order.id })\n\n  // Logger auto-emits when request ends - nothing else to do!\n  return { success: true, orderId: order.id }\n})\n","server/api/checkout.post.ts","typescript","",[65,108,109,150,157,180,187,193,253,297,302,308,327,356,361,367,399],{"__ignoreMap":106},[110,111,114,118,121,125,129,133,137,141,144,147],"span",{"class":112,"line":113},"line",1,[110,115,117],{"class":116},"s7zQu","export",[110,119,120],{"class":116}," default",[110,122,124],{"class":123},"s2Zo4"," defineEventHandler",[110,126,128],{"class":127},"sTEyZ","(",[110,130,132],{"class":131},"spNyl","async",[110,134,136],{"class":135},"sMK4o"," (",[110,138,140],{"class":139},"sHdIc","event",[110,142,143],{"class":135},")",[110,145,146],{"class":131}," =>",[110,148,149],{"class":135}," {\n",[110,151,153],{"class":112,"line":152},2,[110,154,156],{"class":155},"sHwdD","  // Get the request-scoped logger (auto-imported in Nuxt)\n",[110,158,160,163,166,169,172,175,177],{"class":112,"line":159},3,[110,161,162],{"class":131},"  const",[110,164,165],{"class":127}," log",[110,167,168],{"class":135}," =",[110,170,171],{"class":123}," useLogger",[110,173,128],{"class":174},"swJcz",[110,176,140],{"class":127},[110,178,179],{"class":174},")\n",[110,181,183],{"class":112,"line":182},4,[110,184,186],{"emptyLinePlaceholder":185},true,"\n",[110,188,190],{"class":112,"line":189},5,[110,191,192],{"class":155},"  // Accumulate context throughout the request\n",[110,194,196,199,202,205,207,210,213,216,219,222,224,228,231,234,236,239,243,246,249,251],{"class":112,"line":195},6,[110,197,198],{"class":127},"  log",[110,200,201],{"class":135},".",[110,203,204],{"class":123},"set",[110,206,128],{"class":174},[110,208,209],{"class":135},"{",[110,211,212],{"class":174}," user",[110,214,215],{"class":135},":",[110,217,218],{"class":135}," {",[110,220,221],{"class":174}," id",[110,223,215],{"class":135},[110,225,227],{"class":226},"sbssI"," 1",[110,229,230],{"class":135},",",[110,232,233],{"class":174}," plan",[110,235,215],{"class":135},[110,237,238],{"class":135}," '",[110,240,242],{"class":241},"sfazB","pro",[110,244,245],{"class":135},"'",[110,247,248],{"class":135}," }",[110,250,248],{"class":135},[110,252,179],{"class":174},[110,254,256,258,260,262,264,266,269,271,273,276,278,281,283,286,288,291,293,295],{"class":112,"line":255},7,[110,257,198],{"class":127},[110,259,201],{"class":135},[110,261,204],{"class":123},[110,263,128],{"class":174},[110,265,209],{"class":135},[110,267,268],{"class":174}," cart",[110,270,215],{"class":135},[110,272,218],{"class":135},[110,274,275],{"class":174}," items",[110,277,215],{"class":135},[110,279,280],{"class":226}," 3",[110,282,230],{"class":135},[110,284,285],{"class":174}," total",[110,287,215],{"class":135},[110,289,290],{"class":226}," 9999",[110,292,248],{"class":135},[110,294,248],{"class":135},[110,296,179],{"class":174},[110,298,300],{"class":112,"line":299},8,[110,301,186],{"emptyLinePlaceholder":185},[110,303,305],{"class":112,"line":304},9,[110,306,307],{"class":155},"  // Process checkout...\n",[110,309,311,313,316,318,321,324],{"class":112,"line":310},10,[110,312,162],{"class":131},[110,314,315],{"class":127}," order",[110,317,168],{"class":135},[110,319,320],{"class":116}," await",[110,322,323],{"class":123}," processCheckout",[110,325,326],{"class":174},"()\n",[110,328,330,332,334,336,338,340,343,345,347,349,352,354],{"class":112,"line":329},11,[110,331,198],{"class":127},[110,333,201],{"class":135},[110,335,204],{"class":123},[110,337,128],{"class":174},[110,339,209],{"class":135},[110,341,342],{"class":174}," orderId",[110,344,215],{"class":135},[110,346,315],{"class":127},[110,348,201],{"class":135},[110,350,351],{"class":127},"id",[110,353,248],{"class":135},[110,355,179],{"class":174},[110,357,359],{"class":112,"line":358},12,[110,360,186],{"emptyLinePlaceholder":185},[110,362,364],{"class":112,"line":363},13,[110,365,366],{"class":155},"  // Logger auto-emits when request ends - nothing else to do!\n",[110,368,370,373,375,378,380,384,386,388,390,392,394,396],{"class":112,"line":369},14,[110,371,372],{"class":116},"  return",[110,374,218],{"class":135},[110,376,377],{"class":174}," success",[110,379,215],{"class":135},[110,381,383],{"class":382},"sfNiH"," true",[110,385,230],{"class":135},[110,387,342],{"class":174},[110,389,215],{"class":135},[110,391,315],{"class":127},[110,393,201],{"class":135},[110,395,351],{"class":127},[110,397,398],{"class":135}," }\n",[110,400,402,405],{"class":112,"line":401},15,[110,403,404],{"class":135},"}",[110,406,179],{"class":127},[100,408,413],{"className":409,"code":410,"filename":411,"language":412,"meta":106,"style":106},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","10:23:45.612 INFO [my-app] POST /api/checkout 200 in 234ms\n  ├─ user: id=1 plan=pro\n  ├─ cart: items=3 total=9999\n  └─ orderId: ord_abc123\n","Output (Pretty)","bash",[65,414,415,427,444,463],{"__ignoreMap":106},[110,416,417,421,424],{"class":112,"line":113},[110,418,420],{"class":419},"sBMFI","10:23:45.612",[110,422,423],{"class":241}," INFO",[110,425,426],{"class":127}," [my-app] POST /api/checkout 200 in 234ms\n",[110,428,429,432,435,438,441],{"class":112,"line":152},[110,430,431],{"class":419},"  ├─",[110,433,434],{"class":241}," user:",[110,436,437],{"class":241}," id=",[110,439,440],{"class":226},"1",[110,442,443],{"class":241}," plan=pro\n",[110,445,446,448,451,454,457,460],{"class":112,"line":159},[110,447,431],{"class":419},[110,449,450],{"class":241}," cart:",[110,452,453],{"class":241}," items=",[110,455,456],{"class":226},"3",[110,458,459],{"class":241}," total=",[110,461,462],{"class":226},"9999\n",[110,464,465,468,471],{"class":112,"line":182},[110,466,467],{"class":419},"  └─",[110,469,470],{"class":241}," orderId:",[110,472,473],{"class":241}," ord_abc123\n",[59,475,478,479,482],{"color":476,"icon":477},"success","i-lucide-check","The logger automatically emits when the request ends. No manual ",[65,480,481],{},"emit()"," call needed.",[484,485,487],"h3",{"id":486},"when-to-use-uselogger-vs-log","When to use useLogger vs log",[489,490,491,506],"table",{},[492,493,494],"thead",{},[495,496,497,502],"tr",{},[498,499,91,500],"th",{},[65,501,94],{},[498,503,91,504],{},[65,505,71],{},[507,508,509,518,526],"tbody",{},[495,510,511,515],{},[512,513,514],"td",{},"API routes, middleware, server plugins",[512,516,517],{},"One-off events outside request context",[495,519,520,523],{},[512,521,522],{},"When you need to accumulate context",[512,524,525],{},"Quick debugging messages",[495,527,528,531],{},[512,529,530],{},"For wide events (one log per request)",[512,532,533],{},"Client-side logging",[85,535,537],{"id":536},"createerror-structured-errors","createError (Structured Errors)",[55,539,91,540,543],{},[65,541,542],{},"createError()"," to throw errors with actionable context:",[97,545,546,679],{},[100,547,550],{"className":102,"code":548,"filename":549,"language":105,"meta":106,"style":106},"// server/api/checkout.post.ts\nimport { createError } from 'evlog'\n\nthrow createError({\n  message: 'Payment failed',\n  status: 402,\n  why: 'Card declined by issuer',\n  fix: 'Try a different payment method',\n  link: 'https://docs.example.com/payments/declined',\n})\n","Code",[65,551,552,557,580,584,596,613,625,641,657,673],{"__ignoreMap":106},[110,553,554],{"class":112,"line":113},[110,555,556],{"class":155},"// server/api/checkout.post.ts\n",[110,558,559,562,564,567,569,572,574,577],{"class":112,"line":152},[110,560,561],{"class":116},"import",[110,563,218],{"class":135},[110,565,566],{"class":127}," createError",[110,568,248],{"class":135},[110,570,571],{"class":116}," from",[110,573,238],{"class":135},[110,575,576],{"class":241},"evlog",[110,578,579],{"class":135},"'\n",[110,581,582],{"class":112,"line":159},[110,583,186],{"emptyLinePlaceholder":185},[110,585,586,589,591,593],{"class":112,"line":182},[110,587,588],{"class":116},"throw",[110,590,566],{"class":123},[110,592,128],{"class":127},[110,594,595],{"class":135},"{\n",[110,597,598,601,603,605,608,610],{"class":112,"line":189},[110,599,600],{"class":174},"  message",[110,602,215],{"class":135},[110,604,238],{"class":135},[110,606,607],{"class":241},"Payment failed",[110,609,245],{"class":135},[110,611,612],{"class":135},",\n",[110,614,615,618,620,623],{"class":112,"line":195},[110,616,617],{"class":174},"  status",[110,619,215],{"class":135},[110,621,622],{"class":226}," 402",[110,624,612],{"class":135},[110,626,627,630,632,634,637,639],{"class":112,"line":255},[110,628,629],{"class":174},"  why",[110,631,215],{"class":135},[110,633,238],{"class":135},[110,635,636],{"class":241},"Card declined by issuer",[110,638,245],{"class":135},[110,640,612],{"class":135},[110,642,643,646,648,650,653,655],{"class":112,"line":299},[110,644,645],{"class":174},"  fix",[110,647,215],{"class":135},[110,649,238],{"class":135},[110,651,652],{"class":241},"Try a different payment method",[110,654,245],{"class":135},[110,656,612],{"class":135},[110,658,659,662,664,666,669,671],{"class":112,"line":304},[110,660,661],{"class":174},"  link",[110,663,215],{"class":135},[110,665,238],{"class":135},[110,667,668],{"class":241},"https://docs.example.com/payments/declined",[110,670,245],{"class":135},[110,672,612],{"class":135},[110,674,675,677],{"class":112,"line":310},[110,676,404],{"class":135},[110,678,179],{"class":127},[100,680,685],{"className":681,"code":682,"filename":683,"language":684,"meta":106,"style":106},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"statusCode\": 402,\n  \"message\": \"Payment failed\",\n  \"data\": {\n    \"why\": \"Card declined by issuer\",\n    \"fix\": \"Try a different payment method\",\n    \"link\": \"https://docs.example.com/payments/declined\"\n  }\n}\n","Response","json",[65,686,687,691,708,728,741,761,780,798,803],{"__ignoreMap":106},[110,688,689],{"class":112,"line":113},[110,690,595],{"class":135},[110,692,693,696,699,702,704,706],{"class":112,"line":152},[110,694,695],{"class":135},"  \"",[110,697,698],{"class":131},"statusCode",[110,700,701],{"class":135},"\"",[110,703,215],{"class":135},[110,705,622],{"class":226},[110,707,612],{"class":135},[110,709,710,712,715,717,719,722,724,726],{"class":112,"line":159},[110,711,695],{"class":135},[110,713,714],{"class":131},"message",[110,716,701],{"class":135},[110,718,215],{"class":135},[110,720,721],{"class":135}," \"",[110,723,607],{"class":241},[110,725,701],{"class":135},[110,727,612],{"class":135},[110,729,730,732,735,737,739],{"class":112,"line":182},[110,731,695],{"class":135},[110,733,734],{"class":131},"data",[110,736,701],{"class":135},[110,738,215],{"class":135},[110,740,149],{"class":135},[110,742,743,746,749,751,753,755,757,759],{"class":112,"line":189},[110,744,745],{"class":135},"    \"",[110,747,748],{"class":419},"why",[110,750,701],{"class":135},[110,752,215],{"class":135},[110,754,721],{"class":135},[110,756,636],{"class":241},[110,758,701],{"class":135},[110,760,612],{"class":135},[110,762,763,765,768,770,772,774,776,778],{"class":112,"line":195},[110,764,745],{"class":135},[110,766,767],{"class":419},"fix",[110,769,701],{"class":135},[110,771,215],{"class":135},[110,773,721],{"class":135},[110,775,652],{"class":241},[110,777,701],{"class":135},[110,779,612],{"class":135},[110,781,782,784,787,789,791,793,795],{"class":112,"line":255},[110,783,745],{"class":135},[110,785,786],{"class":419},"link",[110,788,701],{"class":135},[110,790,215],{"class":135},[110,792,721],{"class":135},[110,794,668],{"class":241},[110,796,797],{"class":135},"\"\n",[110,799,800],{"class":112,"line":299},[110,801,802],{"class":135},"  }\n",[110,804,805],{"class":112,"line":304},[110,806,807],{"class":135},"}\n",[484,809,811],{"id":810},"error-fields","Error Fields",[489,813,814,827],{},[492,815,816],{},[495,817,818,821,824],{},[498,819,820],{},"Field",[498,822,823],{},"Required",[498,825,826],{},"Description",[507,828,829,841,854,865,876,887],{},[495,830,831,835,838],{},[512,832,833],{},[65,834,714],{},[512,836,837],{},"Yes",[512,839,840],{},"What happened (user-facing)",[495,842,843,848,851],{},[512,844,845],{},[65,846,847],{},"status",[512,849,850],{},"No",[512,852,853],{},"HTTP status code (default: 500)",[495,855,856,860,862],{},[512,857,858],{},[65,859,748],{},[512,861,850],{},[512,863,864],{},"Technical reason (for debugging)",[495,866,867,871,873],{},[512,868,869],{},[65,870,767],{},[512,872,850],{},[512,874,875],{},"Actionable solution",[495,877,878,882,884],{},[512,879,880],{},[65,881,786],{},[512,883,850],{},[512,885,886],{},"Documentation URL for more info",[495,888,889,894,896],{},[512,890,891],{},[65,892,893],{},"cause",[512,895,850],{},[512,897,898],{},"Original error (if wrapping)",[484,900,902],{"id":901},"frontend-integration","Frontend Integration",[55,904,91,905,908],{},[65,906,907],{},"parseError()"," to extract all error fields on the client:",[100,910,913],{"className":102,"code":911,"filename":912,"language":105,"meta":106,"style":106},"import { parseError } from 'evlog'\n\nexport async function checkout(cart: Cart) {\n  try {\n    await $fetch('/api/checkout', { method: 'POST', body: cart })\n  } catch (err) {\n    const error = parseError(err)\n\n    // Direct access to all fields\n    toast.add({\n      title: error.message,\n      description: error.why,\n      color: 'error',\n      actions: error.link\n        ? [{ label: 'Learn more', onClick: () => window.open(error.link) }]\n        : undefined,\n    })\n\n    if (error.fix) {\n      console.info(`Fix: ${error.fix}`)\n    }\n  }\n}\n","composables/useCheckout.ts",[65,914,915,934,938,965,972,1018,1036,1054,1058,1063,1077,1092,1107,1123,1137,1194,1203,1211,1216,1234,1266,1272,1277],{"__ignoreMap":106},[110,916,917,919,921,924,926,928,930,932],{"class":112,"line":113},[110,918,561],{"class":116},[110,920,218],{"class":135},[110,922,923],{"class":127}," parseError",[110,925,248],{"class":135},[110,927,571],{"class":116},[110,929,238],{"class":135},[110,931,576],{"class":241},[110,933,579],{"class":135},[110,935,936],{"class":112,"line":152},[110,937,186],{"emptyLinePlaceholder":185},[110,939,940,942,945,948,951,953,956,958,961,963],{"class":112,"line":159},[110,941,117],{"class":116},[110,943,944],{"class":131}," async",[110,946,947],{"class":131}," function",[110,949,950],{"class":123}," checkout",[110,952,128],{"class":135},[110,954,955],{"class":139},"cart",[110,957,215],{"class":135},[110,959,960],{"class":419}," Cart",[110,962,143],{"class":135},[110,964,149],{"class":135},[110,966,967,970],{"class":112,"line":182},[110,968,969],{"class":116},"  try",[110,971,149],{"class":135},[110,973,974,977,980,982,984,987,989,991,993,996,998,1000,1003,1005,1007,1010,1012,1014,1016],{"class":112,"line":189},[110,975,976],{"class":116},"    await",[110,978,979],{"class":123}," $fetch",[110,981,128],{"class":174},[110,983,245],{"class":135},[110,985,986],{"class":241},"/api/checkout",[110,988,245],{"class":135},[110,990,230],{"class":135},[110,992,218],{"class":135},[110,994,995],{"class":174}," method",[110,997,215],{"class":135},[110,999,238],{"class":135},[110,1001,1002],{"class":241},"POST",[110,1004,245],{"class":135},[110,1006,230],{"class":135},[110,1008,1009],{"class":174}," body",[110,1011,215],{"class":135},[110,1013,268],{"class":127},[110,1015,248],{"class":135},[110,1017,179],{"class":174},[110,1019,1020,1023,1026,1028,1031,1034],{"class":112,"line":195},[110,1021,1022],{"class":135},"  }",[110,1024,1025],{"class":116}," catch",[110,1027,136],{"class":174},[110,1029,1030],{"class":127},"err",[110,1032,1033],{"class":174},") ",[110,1035,595],{"class":135},[110,1037,1038,1041,1044,1046,1048,1050,1052],{"class":112,"line":255},[110,1039,1040],{"class":131},"    const",[110,1042,1043],{"class":127}," error",[110,1045,168],{"class":135},[110,1047,923],{"class":123},[110,1049,128],{"class":174},[110,1051,1030],{"class":127},[110,1053,179],{"class":174},[110,1055,1056],{"class":112,"line":299},[110,1057,186],{"emptyLinePlaceholder":185},[110,1059,1060],{"class":112,"line":304},[110,1061,1062],{"class":155},"    // Direct access to all fields\n",[110,1064,1065,1068,1070,1073,1075],{"class":112,"line":310},[110,1066,1067],{"class":127},"    toast",[110,1069,201],{"class":135},[110,1071,1072],{"class":123},"add",[110,1074,128],{"class":174},[110,1076,595],{"class":135},[110,1078,1079,1082,1084,1086,1088,1090],{"class":112,"line":329},[110,1080,1081],{"class":174},"      title",[110,1083,215],{"class":135},[110,1085,1043],{"class":127},[110,1087,201],{"class":135},[110,1089,714],{"class":127},[110,1091,612],{"class":135},[110,1093,1094,1097,1099,1101,1103,1105],{"class":112,"line":358},[110,1095,1096],{"class":174},"      description",[110,1098,215],{"class":135},[110,1100,1043],{"class":127},[110,1102,201],{"class":135},[110,1104,748],{"class":127},[110,1106,612],{"class":135},[110,1108,1109,1112,1114,1116,1119,1121],{"class":112,"line":363},[110,1110,1111],{"class":174},"      color",[110,1113,215],{"class":135},[110,1115,238],{"class":135},[110,1117,1118],{"class":241},"error",[110,1120,245],{"class":135},[110,1122,612],{"class":135},[110,1124,1125,1128,1130,1132,1134],{"class":112,"line":369},[110,1126,1127],{"class":174},"      actions",[110,1129,215],{"class":135},[110,1131,1043],{"class":127},[110,1133,201],{"class":135},[110,1135,1136],{"class":127},"link\n",[110,1138,1139,1142,1145,1147,1150,1152,1154,1157,1159,1161,1164,1166,1169,1171,1174,1176,1179,1181,1183,1185,1187,1189,1191],{"class":112,"line":401},[110,1140,1141],{"class":135},"        ?",[110,1143,1144],{"class":174}," [",[110,1146,209],{"class":135},[110,1148,1149],{"class":174}," label",[110,1151,215],{"class":135},[110,1153,238],{"class":135},[110,1155,1156],{"class":241},"Learn more",[110,1158,245],{"class":135},[110,1160,230],{"class":135},[110,1162,1163],{"class":123}," onClick",[110,1165,215],{"class":135},[110,1167,1168],{"class":135}," ()",[110,1170,146],{"class":131},[110,1172,1173],{"class":127}," window",[110,1175,201],{"class":135},[110,1177,1178],{"class":123},"open",[110,1180,128],{"class":174},[110,1182,1118],{"class":127},[110,1184,201],{"class":135},[110,1186,786],{"class":127},[110,1188,1033],{"class":174},[110,1190,404],{"class":135},[110,1192,1193],{"class":174},"]\n",[110,1195,1197,1200],{"class":112,"line":1196},16,[110,1198,1199],{"class":135},"        :",[110,1201,1202],{"class":135}," undefined,\n",[110,1204,1206,1209],{"class":112,"line":1205},17,[110,1207,1208],{"class":135},"    }",[110,1210,179],{"class":174},[110,1212,1214],{"class":112,"line":1213},18,[110,1215,186],{"emptyLinePlaceholder":185},[110,1217,1219,1222,1224,1226,1228,1230,1232],{"class":112,"line":1218},19,[110,1220,1221],{"class":116},"    if",[110,1223,136],{"class":174},[110,1225,1118],{"class":127},[110,1227,201],{"class":135},[110,1229,767],{"class":127},[110,1231,1033],{"class":174},[110,1233,595],{"class":135},[110,1235,1237,1240,1242,1244,1246,1249,1252,1255,1257,1259,1261,1264],{"class":112,"line":1236},20,[110,1238,1239],{"class":127},"      console",[110,1241,201],{"class":135},[110,1243,61],{"class":123},[110,1245,128],{"class":174},[110,1247,1248],{"class":135},"`",[110,1250,1251],{"class":241},"Fix: ",[110,1253,1254],{"class":135},"${",[110,1256,1118],{"class":127},[110,1258,201],{"class":135},[110,1260,767],{"class":127},[110,1262,1263],{"class":135},"}`",[110,1265,179],{"class":174},[110,1267,1269],{"class":112,"line":1268},21,[110,1270,1271],{"class":135},"    }\n",[110,1273,1275],{"class":112,"line":1274},22,[110,1276,802],{"class":135},[110,1278,1280],{"class":112,"line":1279},23,[110,1281,807],{"class":135},[85,1283,1285],{"id":1284},"log-simple-logging","log (Simple Logging)",[55,1287,1288],{},"For quick one-off logs anywhere in your code:",[97,1290,1291,1400],{},[100,1292,1295],{"className":102,"code":1293,"filename":1294,"language":105,"meta":106,"style":106},"// server/utils/auth.ts\nlog.info('auth', 'User logged in')\nlog.error({ action: 'payment', error: 'card_declined' })\nlog.warn('cache', 'Cache miss')\n","Server",[65,1296,1297,1302,1330,1371],{"__ignoreMap":106},[110,1298,1299],{"class":112,"line":113},[110,1300,1301],{"class":155},"// server/utils/auth.ts\n",[110,1303,1304,1306,1308,1310,1312,1314,1317,1319,1321,1323,1326,1328],{"class":112,"line":152},[110,1305,71],{"class":127},[110,1307,201],{"class":135},[110,1309,61],{"class":123},[110,1311,128],{"class":127},[110,1313,245],{"class":135},[110,1315,1316],{"class":241},"auth",[110,1318,245],{"class":135},[110,1320,230],{"class":135},[110,1322,238],{"class":135},[110,1324,1325],{"class":241},"User logged in",[110,1327,245],{"class":135},[110,1329,179],{"class":127},[110,1331,1332,1334,1336,1338,1340,1342,1345,1347,1349,1352,1354,1356,1358,1360,1362,1365,1367,1369],{"class":112,"line":159},[110,1333,71],{"class":127},[110,1335,201],{"class":135},[110,1337,1118],{"class":123},[110,1339,128],{"class":127},[110,1341,209],{"class":135},[110,1343,1344],{"class":174}," action",[110,1346,215],{"class":135},[110,1348,238],{"class":135},[110,1350,1351],{"class":241},"payment",[110,1353,245],{"class":135},[110,1355,230],{"class":135},[110,1357,1043],{"class":174},[110,1359,215],{"class":135},[110,1361,238],{"class":135},[110,1363,1364],{"class":241},"card_declined",[110,1366,245],{"class":135},[110,1368,248],{"class":135},[110,1370,179],{"class":127},[110,1372,1373,1375,1377,1380,1382,1384,1387,1389,1391,1393,1396,1398],{"class":112,"line":182},[110,1374,71],{"class":127},[110,1376,201],{"class":135},[110,1378,1379],{"class":123},"warn",[110,1381,128],{"class":127},[110,1383,245],{"class":135},[110,1385,1386],{"class":241},"cache",[110,1388,245],{"class":135},[110,1390,230],{"class":135},[110,1392,238],{"class":135},[110,1394,1395],{"class":241},"Cache miss",[110,1397,245],{"class":135},[110,1399,179],{"class":127},[100,1401,1404],{"className":409,"code":1402,"filename":1403,"language":412,"meta":106,"style":106},"10:23:45.612 [auth] User logged in\n10:23:45.613 ERROR [my-app] action=payment error=card_declined\n10:23:45.614 [cache] Cache miss\n","Output",[65,1405,1406,1413,1436],{"__ignoreMap":106},[110,1407,1408,1410],{"class":112,"line":113},[110,1409,420],{"class":419},[110,1411,1412],{"class":127}," [auth] User logged in\n",[110,1414,1415,1418,1421,1424,1427,1429,1431,1433],{"class":112,"line":152},[110,1416,1417],{"class":419},"10:23:45.613",[110,1419,1420],{"class":241}," ERROR",[110,1422,1423],{"class":127}," [my-app] action",[110,1425,1426],{"class":135},"=",[110,1428,1351],{"class":241},[110,1430,1043],{"class":127},[110,1432,1426],{"class":135},[110,1434,1435],{"class":241},"card_declined\n",[110,1437,1438,1441],{"class":112,"line":159},[110,1439,1440],{"class":419},"10:23:45.614",[110,1442,1443],{"class":127}," [cache] Cache miss\n",[59,1445,1448,1449,1451,1452,1454],{"color":1446,"icon":1447},"warning","i-lucide-lightbulb","Prefer wide events (",[65,1450,67],{},") over simple logs when possible. Use ",[65,1453,71],{}," for truly one-off events that don't belong to a request.",[85,1456,1458],{"id":1457},"log-client-side","log (Client-Side)",[55,1460,1461,1462,1464],{},"The same ",[65,1463,71],{}," API works on the client side, outputting to the browser console:",[97,1466,1467,1695],{},[100,1468,1473],{"className":1469,"code":1470,"filename":1471,"language":1472,"meta":106,"style":106},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\nasync function handleCheckout() {\n  log.info('checkout', 'User initiated checkout')\n\n  try {\n    await $fetch('/api/checkout', { method: 'POST' })\n    log.info({ action: 'checkout', status: 'success' })\n  } catch (err) {\n    log.error({ action: 'checkout', error: 'failed' })\n  }\n}\n\u003C/script>\n","components/CheckoutButton.vue","vue",[65,1474,1475,1501,1515,1543,1547,1553,1585,1625,1639,1678,1682,1686],{"__ignoreMap":106},[110,1476,1477,1480,1483,1486,1489,1491,1493,1496,1498],{"class":112,"line":113},[110,1478,1479],{"class":135},"\u003C",[110,1481,1482],{"class":174},"script",[110,1484,1485],{"class":131}," setup",[110,1487,1488],{"class":131}," lang",[110,1490,1426],{"class":135},[110,1492,701],{"class":135},[110,1494,1495],{"class":241},"ts",[110,1497,701],{"class":135},[110,1499,1500],{"class":135},">\n",[110,1502,1503,1505,1507,1510,1513],{"class":112,"line":152},[110,1504,132],{"class":131},[110,1506,947],{"class":131},[110,1508,1509],{"class":123}," handleCheckout",[110,1511,1512],{"class":135},"()",[110,1514,149],{"class":135},[110,1516,1517,1519,1521,1523,1525,1527,1530,1532,1534,1536,1539,1541],{"class":112,"line":159},[110,1518,198],{"class":127},[110,1520,201],{"class":135},[110,1522,61],{"class":123},[110,1524,128],{"class":174},[110,1526,245],{"class":135},[110,1528,1529],{"class":241},"checkout",[110,1531,245],{"class":135},[110,1533,230],{"class":135},[110,1535,238],{"class":135},[110,1537,1538],{"class":241},"User initiated checkout",[110,1540,245],{"class":135},[110,1542,179],{"class":174},[110,1544,1545],{"class":112,"line":182},[110,1546,186],{"emptyLinePlaceholder":185},[110,1548,1549,1551],{"class":112,"line":189},[110,1550,969],{"class":116},[110,1552,149],{"class":135},[110,1554,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583],{"class":112,"line":195},[110,1556,976],{"class":116},[110,1558,979],{"class":123},[110,1560,128],{"class":174},[110,1562,245],{"class":135},[110,1564,986],{"class":241},[110,1566,245],{"class":135},[110,1568,230],{"class":135},[110,1570,218],{"class":135},[110,1572,995],{"class":174},[110,1574,215],{"class":135},[110,1576,238],{"class":135},[110,1578,1002],{"class":241},[110,1580,245],{"class":135},[110,1582,248],{"class":135},[110,1584,179],{"class":174},[110,1586,1587,1590,1592,1594,1596,1598,1600,1602,1604,1606,1608,1610,1613,1615,1617,1619,1621,1623],{"class":112,"line":255},[110,1588,1589],{"class":127},"    log",[110,1591,201],{"class":135},[110,1593,61],{"class":123},[110,1595,128],{"class":174},[110,1597,209],{"class":135},[110,1599,1344],{"class":174},[110,1601,215],{"class":135},[110,1603,238],{"class":135},[110,1605,1529],{"class":241},[110,1607,245],{"class":135},[110,1609,230],{"class":135},[110,1611,1612],{"class":174}," status",[110,1614,215],{"class":135},[110,1616,238],{"class":135},[110,1618,476],{"class":241},[110,1620,245],{"class":135},[110,1622,248],{"class":135},[110,1624,179],{"class":174},[110,1626,1627,1629,1631,1633,1635,1637],{"class":112,"line":299},[110,1628,1022],{"class":135},[110,1630,1025],{"class":116},[110,1632,136],{"class":174},[110,1634,1030],{"class":127},[110,1636,1033],{"class":174},[110,1638,595],{"class":135},[110,1640,1641,1643,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1672,1674,1676],{"class":112,"line":304},[110,1642,1589],{"class":127},[110,1644,201],{"class":135},[110,1646,1118],{"class":123},[110,1648,128],{"class":174},[110,1650,209],{"class":135},[110,1652,1344],{"class":174},[110,1654,215],{"class":135},[110,1656,238],{"class":135},[110,1658,1529],{"class":241},[110,1660,245],{"class":135},[110,1662,230],{"class":135},[110,1664,1043],{"class":174},[110,1666,215],{"class":135},[110,1668,238],{"class":135},[110,1670,1671],{"class":241},"failed",[110,1673,245],{"class":135},[110,1675,248],{"class":135},[110,1677,179],{"class":174},[110,1679,1680],{"class":112,"line":310},[110,1681,802],{"class":135},[110,1683,1684],{"class":112,"line":329},[110,1685,807],{"class":135},[110,1687,1688,1691,1693],{"class":112,"line":358},[110,1689,1690],{"class":135},"\u003C/",[110,1692,1482],{"class":174},[110,1694,1500],{"class":135},[100,1696,1699],{"className":102,"code":1697,"filename":1698,"language":105,"meta":106,"style":106},"export function useAnalytics() {\n  function trackEvent(event: string, data?: Record\u003Cstring, unknown>) {\n    log.info('analytics', `Event: ${event}`)\n    if (data) {\n      log.debug({ event, ...data })\n    }\n  }\n\n  return { trackEvent }\n}\n","composables/useAnalytics.ts",[65,1700,1701,1714,1757,1790,1802,1830,1834,1838,1842,1852],{"__ignoreMap":106},[110,1702,1703,1705,1707,1710,1712],{"class":112,"line":113},[110,1704,117],{"class":116},[110,1706,947],{"class":131},[110,1708,1709],{"class":123}," useAnalytics",[110,1711,1512],{"class":135},[110,1713,149],{"class":135},[110,1715,1716,1719,1722,1724,1726,1728,1731,1733,1736,1739,1742,1744,1747,1749,1752,1755],{"class":112,"line":152},[110,1717,1718],{"class":131},"  function",[110,1720,1721],{"class":123}," trackEvent",[110,1723,128],{"class":135},[110,1725,140],{"class":139},[110,1727,215],{"class":135},[110,1729,1730],{"class":419}," string",[110,1732,230],{"class":135},[110,1734,1735],{"class":139}," data",[110,1737,1738],{"class":135},"?:",[110,1740,1741],{"class":419}," Record",[110,1743,1479],{"class":135},[110,1745,1746],{"class":419},"string",[110,1748,230],{"class":135},[110,1750,1751],{"class":419}," unknown",[110,1753,1754],{"class":135},">)",[110,1756,149],{"class":135},[110,1758,1759,1761,1763,1765,1767,1769,1772,1774,1776,1779,1782,1784,1786,1788],{"class":112,"line":159},[110,1760,1589],{"class":127},[110,1762,201],{"class":135},[110,1764,61],{"class":123},[110,1766,128],{"class":174},[110,1768,245],{"class":135},[110,1770,1771],{"class":241},"analytics",[110,1773,245],{"class":135},[110,1775,230],{"class":135},[110,1777,1778],{"class":135}," `",[110,1780,1781],{"class":241},"Event: ",[110,1783,1254],{"class":135},[110,1785,140],{"class":127},[110,1787,1263],{"class":135},[110,1789,179],{"class":174},[110,1791,1792,1794,1796,1798,1800],{"class":112,"line":182},[110,1793,1221],{"class":116},[110,1795,136],{"class":174},[110,1797,734],{"class":127},[110,1799,1033],{"class":174},[110,1801,595],{"class":135},[110,1803,1804,1807,1809,1812,1814,1816,1819,1821,1824,1826,1828],{"class":112,"line":189},[110,1805,1806],{"class":127},"      log",[110,1808,201],{"class":135},[110,1810,1811],{"class":123},"debug",[110,1813,128],{"class":174},[110,1815,209],{"class":135},[110,1817,1818],{"class":127}," event",[110,1820,230],{"class":135},[110,1822,1823],{"class":135}," ...",[110,1825,734],{"class":127},[110,1827,248],{"class":135},[110,1829,179],{"class":174},[110,1831,1832],{"class":112,"line":195},[110,1833,1271],{"class":135},[110,1835,1836],{"class":112,"line":255},[110,1837,802],{"class":135},[110,1839,1840],{"class":112,"line":299},[110,1841,186],{"emptyLinePlaceholder":185},[110,1843,1844,1846,1848,1850],{"class":112,"line":304},[110,1845,372],{"class":116},[110,1847,218],{"class":135},[110,1849,1721],{"class":127},[110,1851,398],{"class":135},[110,1853,1854],{"class":112,"line":310},[110,1855,807],{"class":135},[55,1857,1858],{},"In pretty mode (development), client logs appear with colored tags in the browser console:",[100,1860,1865],{"className":1861,"code":1863,"language":1864},[1862],"language-text","[my-app] info { action: 'checkout', status: 'success' }\n","text",[65,1866,1863],{"__ignoreMap":106},[59,1868,1870,1871,1873],{"color":61,"icon":1869},"i-lucide-info","Client-side ",[65,1872,71],{}," is designed for debugging and development. For production analytics, use dedicated services like Plausible, PostHog, or Mixpanel.",[85,1875,1877],{"id":1876},"wide-event-fields","Wide Event Fields",[55,1879,1880],{},"Every wide event should include context from different layers:",[97,1882,1883,2102],{},[100,1884,1886],{"className":102,"code":1885,"filename":549,"language":105,"meta":106,"style":106},"// server/api/checkout.post.ts\nconst log = useLogger(event)\n\n// Request context (often auto-populated)\nlog.set({ method: 'POST', path: '/api/checkout' })\n\n// User context\nlog.set({ userId: 1, subscription: 'pro' })\n\n// Business context\nlog.set({ cart: { items: 3, total: 9999 }, coupon: 'SAVE10' })\n\n// Outcome\nlog.set({ status: 200, duration: 234 })\n",[65,1887,1888,1892,1907,1911,1916,1955,1959,1964,2000,2004,2009,2060,2064,2069],{"__ignoreMap":106},[110,1889,1890],{"class":112,"line":113},[110,1891,556],{"class":155},[110,1893,1894,1897,1900,1902,1904],{"class":112,"line":152},[110,1895,1896],{"class":131},"const",[110,1898,1899],{"class":127}," log ",[110,1901,1426],{"class":135},[110,1903,171],{"class":123},[110,1905,1906],{"class":127},"(event)\n",[110,1908,1909],{"class":112,"line":159},[110,1910,186],{"emptyLinePlaceholder":185},[110,1912,1913],{"class":112,"line":182},[110,1914,1915],{"class":155},"// Request context (often auto-populated)\n",[110,1917,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936,1938,1940,1943,1945,1947,1949,1951,1953],{"class":112,"line":189},[110,1919,71],{"class":127},[110,1921,201],{"class":135},[110,1923,204],{"class":123},[110,1925,128],{"class":127},[110,1927,209],{"class":135},[110,1929,995],{"class":174},[110,1931,215],{"class":135},[110,1933,238],{"class":135},[110,1935,1002],{"class":241},[110,1937,245],{"class":135},[110,1939,230],{"class":135},[110,1941,1942],{"class":174}," path",[110,1944,215],{"class":135},[110,1946,238],{"class":135},[110,1948,986],{"class":241},[110,1950,245],{"class":135},[110,1952,248],{"class":135},[110,1954,179],{"class":127},[110,1956,1957],{"class":112,"line":195},[110,1958,186],{"emptyLinePlaceholder":185},[110,1960,1961],{"class":112,"line":255},[110,1962,1963],{"class":155},"// User context\n",[110,1965,1966,1968,1970,1972,1974,1976,1979,1981,1983,1985,1988,1990,1992,1994,1996,1998],{"class":112,"line":299},[110,1967,71],{"class":127},[110,1969,201],{"class":135},[110,1971,204],{"class":123},[110,1973,128],{"class":127},[110,1975,209],{"class":135},[110,1977,1978],{"class":174}," userId",[110,1980,215],{"class":135},[110,1982,227],{"class":226},[110,1984,230],{"class":135},[110,1986,1987],{"class":174}," subscription",[110,1989,215],{"class":135},[110,1991,238],{"class":135},[110,1993,242],{"class":241},[110,1995,245],{"class":135},[110,1997,248],{"class":135},[110,1999,179],{"class":127},[110,2001,2002],{"class":112,"line":304},[110,2003,186],{"emptyLinePlaceholder":185},[110,2005,2006],{"class":112,"line":310},[110,2007,2008],{"class":155},"// Business context\n",[110,2010,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2044,2047,2049,2051,2054,2056,2058],{"class":112,"line":329},[110,2012,71],{"class":127},[110,2014,201],{"class":135},[110,2016,204],{"class":123},[110,2018,128],{"class":127},[110,2020,209],{"class":135},[110,2022,268],{"class":174},[110,2024,215],{"class":135},[110,2026,218],{"class":135},[110,2028,275],{"class":174},[110,2030,215],{"class":135},[110,2032,280],{"class":226},[110,2034,230],{"class":135},[110,2036,285],{"class":174},[110,2038,215],{"class":135},[110,2040,290],{"class":226},[110,2042,2043],{"class":135}," },",[110,2045,2046],{"class":174}," coupon",[110,2048,215],{"class":135},[110,2050,238],{"class":135},[110,2052,2053],{"class":241},"SAVE10",[110,2055,245],{"class":135},[110,2057,248],{"class":135},[110,2059,179],{"class":127},[110,2061,2062],{"class":112,"line":358},[110,2063,186],{"emptyLinePlaceholder":185},[110,2065,2066],{"class":112,"line":363},[110,2067,2068],{"class":155},"// Outcome\n",[110,2070,2071,2073,2075,2077,2079,2081,2083,2085,2088,2090,2093,2095,2098,2100],{"class":112,"line":369},[110,2072,71],{"class":127},[110,2074,201],{"class":135},[110,2076,204],{"class":123},[110,2078,128],{"class":127},[110,2080,209],{"class":135},[110,2082,1612],{"class":174},[110,2084,215],{"class":135},[110,2086,2087],{"class":226}," 200",[110,2089,230],{"class":135},[110,2091,2092],{"class":174}," duration",[110,2094,215],{"class":135},[110,2096,2097],{"class":226}," 234",[110,2099,248],{"class":135},[110,2101,179],{"class":127},[100,2103,2106],{"className":681,"code":2104,"filename":2105,"language":684,"meta":106,"style":106},"{\n  \"level\": \"info\",\n  \"method\": \"POST\",\n  \"path\": \"/api/checkout\",\n  \"userId\": 1,\n  \"subscription\": \"pro\",\n  \"cart\": { \"items\": 3, \"total\": 9999 },\n  \"coupon\": \"SAVE10\",\n  \"status\": 200,\n  \"duration\": 234\n}\n","JSON Output (Production)",[65,2107,2108,2112,2131,2150,2169,2184,2203,2242,2261,2275,2289],{"__ignoreMap":106},[110,2109,2110],{"class":112,"line":113},[110,2111,595],{"class":135},[110,2113,2114,2116,2119,2121,2123,2125,2127,2129],{"class":112,"line":152},[110,2115,695],{"class":135},[110,2117,2118],{"class":131},"level",[110,2120,701],{"class":135},[110,2122,215],{"class":135},[110,2124,721],{"class":135},[110,2126,61],{"class":241},[110,2128,701],{"class":135},[110,2130,612],{"class":135},[110,2132,2133,2135,2138,2140,2142,2144,2146,2148],{"class":112,"line":159},[110,2134,695],{"class":135},[110,2136,2137],{"class":131},"method",[110,2139,701],{"class":135},[110,2141,215],{"class":135},[110,2143,721],{"class":135},[110,2145,1002],{"class":241},[110,2147,701],{"class":135},[110,2149,612],{"class":135},[110,2151,2152,2154,2157,2159,2161,2163,2165,2167],{"class":112,"line":182},[110,2153,695],{"class":135},[110,2155,2156],{"class":131},"path",[110,2158,701],{"class":135},[110,2160,215],{"class":135},[110,2162,721],{"class":135},[110,2164,986],{"class":241},[110,2166,701],{"class":135},[110,2168,612],{"class":135},[110,2170,2171,2173,2176,2178,2180,2182],{"class":112,"line":189},[110,2172,695],{"class":135},[110,2174,2175],{"class":131},"userId",[110,2177,701],{"class":135},[110,2179,215],{"class":135},[110,2181,227],{"class":226},[110,2183,612],{"class":135},[110,2185,2186,2188,2191,2193,2195,2197,2199,2201],{"class":112,"line":195},[110,2187,695],{"class":135},[110,2189,2190],{"class":131},"subscription",[110,2192,701],{"class":135},[110,2194,215],{"class":135},[110,2196,721],{"class":135},[110,2198,242],{"class":241},[110,2200,701],{"class":135},[110,2202,612],{"class":135},[110,2204,2205,2207,2209,2211,2213,2215,2217,2220,2222,2224,2226,2228,2230,2233,2235,2237,2239],{"class":112,"line":255},[110,2206,695],{"class":135},[110,2208,955],{"class":131},[110,2210,701],{"class":135},[110,2212,215],{"class":135},[110,2214,218],{"class":135},[110,2216,721],{"class":135},[110,2218,2219],{"class":419},"items",[110,2221,701],{"class":135},[110,2223,215],{"class":135},[110,2225,280],{"class":226},[110,2227,230],{"class":135},[110,2229,721],{"class":135},[110,2231,2232],{"class":419},"total",[110,2234,701],{"class":135},[110,2236,215],{"class":135},[110,2238,290],{"class":226},[110,2240,2241],{"class":135}," },\n",[110,2243,2244,2246,2249,2251,2253,2255,2257,2259],{"class":112,"line":299},[110,2245,695],{"class":135},[110,2247,2248],{"class":131},"coupon",[110,2250,701],{"class":135},[110,2252,215],{"class":135},[110,2254,721],{"class":135},[110,2256,2053],{"class":241},[110,2258,701],{"class":135},[110,2260,612],{"class":135},[110,2262,2263,2265,2267,2269,2271,2273],{"class":112,"line":304},[110,2264,695],{"class":135},[110,2266,847],{"class":131},[110,2268,701],{"class":135},[110,2270,215],{"class":135},[110,2272,2087],{"class":226},[110,2274,612],{"class":135},[110,2276,2277,2279,2282,2284,2286],{"class":112,"line":310},[110,2278,695],{"class":135},[110,2280,2281],{"class":131},"duration",[110,2283,701],{"class":135},[110,2285,215],{"class":135},[110,2287,2288],{"class":226}," 234\n",[110,2290,2291],{"class":112,"line":329},[110,2292,807],{"class":135},[85,2294,2296],{"id":2295},"next-steps","Next Steps",[2298,2299,2300,2307,2312],"ul",{},[2301,2302,2303,2306],"li",{},[2304,2305,32],"a",{"href":33}," - Learn how to design effective wide events",[2301,2308,2309,2311],{},[2304,2310,35],{"href":36}," - Master error handling with evlog",[2301,2313,2314,2316],{},[2304,2315,38],{"href":39}," - Security guidelines and production tips",[2318,2319,2320],"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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .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 .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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}",{"title":106,"searchDepth":152,"depth":152,"links":2322},[2323,2326,2330,2331,2332,2333],{"id":87,"depth":152,"text":88,"children":2324},[2325],{"id":486,"depth":159,"text":487},{"id":536,"depth":152,"text":537,"children":2327},[2328,2329],{"id":810,"depth":159,"text":811},{"id":901,"depth":159,"text":902},{"id":1284,"depth":152,"text":1285},{"id":1457,"depth":152,"text":1458},{"id":1876,"depth":152,"text":1877},{"id":2295,"depth":152,"text":2296},"Get up and running with evlog in minutes.","md",null,{},{"title":19,"description":2334},"plSHda-vRpZOmbZkmrPqF2_MjTNeYk7ZVxP3Pum74NE",[2341,2343],{"title":15,"path":16,"stem":17,"description":2342,"children":-1},"Install evlog in your Nuxt, Nitro, or standalone TypeScript project.",{"title":23,"path":24,"stem":25,"description":2344,"children":-1},"AI-assisted code review and evlog adoption using Agent Skills.",1770073956564]