[{"data":1,"prerenderedAt":3259},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-quick-start":166,"-getting-started-quick-start-surround":3254},[4,30,55,105,122,136],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","/getting-started","1.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","/getting-started/introduction","1.getting-started/1.introduction","i-lucide-info",{"title":15,"path":16,"stem":17,"icon":18},"Installation","/getting-started/installation","1.getting-started/2.installation","i-lucide-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","/getting-started/quick-start","1.getting-started/3.quick-start","i-lucide-zap",{"title":25,"path":26,"stem":27,"icon":28},"Agent Skills","/getting-started/agent-skills","1.getting-started/4.agent-skills","i-lucide-sparkles",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Core Concepts","/core-concepts","2.core-concepts",[35,40,45,50],{"title":36,"path":37,"stem":38,"icon":39},"Wide Events","/core-concepts/wide-events","2.core-concepts/1.wide-events","i-lucide-layers",{"title":41,"path":42,"stem":43,"icon":44},"Structured Errors","/core-concepts/structured-errors","2.core-concepts/2.structured-errors","i-lucide-shield-alert",{"title":46,"path":47,"stem":48,"icon":49},"Best Practices","/core-concepts/best-practices","2.core-concepts/3.best-practices","i-lucide-shield-check",{"title":51,"path":52,"stem":53,"icon":54},"Typed Fields","/core-concepts/typed-fields","2.core-concepts/4.typed-fields","i-simple-icons-typescript",{"title":56,"path":57,"stem":58,"children":59,"page":29},"Adapters","/adapters","3.adapters",[60,65,70,75,80,85,90,95,100],{"title":61,"path":62,"stem":63,"icon":64},"Overview","/adapters/overview","3.adapters/1.overview","i-custom-plug",{"title":66,"path":67,"stem":68,"icon":69},"Axiom","/adapters/axiom","3.adapters/2.axiom","i-custom-axiom",{"title":71,"path":72,"stem":73,"icon":74},"OTLP","/adapters/otlp","3.adapters/3.otlp","i-simple-icons-opentelemetry",{"title":76,"path":77,"stem":78,"icon":79},"PostHog","/adapters/posthog","3.adapters/4.posthog","i-simple-icons-posthog",{"title":81,"path":82,"stem":83,"icon":84},"Sentry","/adapters/sentry","3.adapters/5.sentry","i-simple-icons-sentry",{"title":86,"path":87,"stem":88,"icon":89},"Better Stack","/adapters/better-stack","3.adapters/6.better-stack","i-simple-icons-betterstack",{"title":91,"path":92,"stem":93,"icon":94},"Custom Adapters","/adapters/custom","3.adapters/7.custom","i-lucide-code",{"title":96,"path":97,"stem":98,"icon":99},"Pipeline","/adapters/pipeline","3.adapters/8.pipeline","i-lucide-workflow",{"title":101,"path":102,"stem":103,"icon":104},"Browser","/adapters/browser","3.adapters/9.browser","i-lucide-globe",{"title":106,"path":107,"stem":108,"children":109,"page":29},"Enrichers","/enrichers","4.enrichers",[110,113,118],{"title":61,"path":111,"stem":112,"icon":28},"/enrichers/overview","4.enrichers/1.overview",{"title":114,"path":115,"stem":116,"icon":117},"Built-in","/enrichers/built-in","4.enrichers/2.built-in","i-lucide-puzzle",{"title":119,"path":120,"stem":121,"icon":94},"Custom","/enrichers/custom","4.enrichers/3.custom",{"title":123,"path":124,"stem":125,"children":126,"page":29},"NuxtHub","/nuxthub","5.nuxthub",[127,131],{"title":61,"path":128,"stem":129,"icon":130},"/nuxthub/overview","5.nuxthub/1.overview","i-lucide-database",{"title":132,"path":133,"stem":134,"icon":135},"Retention","/nuxthub/retention","5.nuxthub/2.retention","i-lucide-clock",{"title":137,"path":138,"stem":139,"children":140,"page":29},"Examples","/examples","6.examples",[141,146,151,156,161],{"title":142,"path":143,"stem":144,"icon":145},"Next.js","/examples/nextjs","6.examples/1.nextjs","i-simple-icons-nextdotjs",{"title":147,"path":148,"stem":149,"icon":150},"TanStack Start","/examples/tanstack-start","6.examples/2.tanstack-start","i-custom-tanstack",{"title":152,"path":153,"stem":154,"icon":155},"Hono","/examples/hono","6.examples/3.hono","i-simple-icons-hono",{"title":157,"path":158,"stem":159,"icon":160},"Express","/examples/express","6.examples/4.express","i-simple-icons-express",{"title":162,"path":163,"stem":164,"icon":165},"Elysia","/examples/elysia","6.examples/5.elysia","i-custom-elysia",{"id":167,"title":20,"body":168,"description":3243,"extension":3244,"links":3245,"meta":3250,"navigation":3251,"path":21,"seo":3252,"stem":22,"__hash__":3253},"docs/1.getting-started/3.quick-start.md",{"type":169,"value":170,"toc":3228},"minimark",[171,175,200,205,212,590,599,604,664,668,671,676,682,875,878,926,930,935,1047,1060,1064,1069,1329,1354,1371,1443,1458,1462,1468,1726,1730,1817,1821,1827,2195,2199,2202,2353,2364,2368,2374,2765,2768,2776,2782,2786,2789,3195,3199,3224],[172,173,174],"p",{},"This guide covers the core APIs you'll use most often with evlog.",[176,177,179,180,184,185,189,190,189,193,189,196,199],"callout",{"color":178,"icon":28},"info","In Nuxt, evlog ",[181,182,183],"strong",{},"auto-imports"," all functions (",[186,187,188],"code",{},"useLogger",", ",[186,191,192],{},"log",[186,194,195],{},"createError",[186,197,198],{},"parseError","). No import statements needed.",[201,202,204],"h2",{"id":203},"uselogger-server-side","useLogger (Server-Side)",[172,206,207,208,211],{},"Use ",[186,209,210],{},"useLogger(event)"," in any Nuxt/Nitro API route to get a request-scoped logger:",[213,214,215,523],"code-group",{},[216,217,223],"pre",{"className":218,"code":219,"filename":220,"language":221,"meta":222,"style":222},"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","",[186,224,225,266,273,296,303,309,369,413,418,424,443,472,477,483,515],{"__ignoreMap":222},[226,227,230,234,237,241,245,249,253,257,260,263],"span",{"class":228,"line":229},"line",1,[226,231,233],{"class":232},"s7zQu","export",[226,235,236],{"class":232}," default",[226,238,240],{"class":239},"s2Zo4"," defineEventHandler",[226,242,244],{"class":243},"sTEyZ","(",[226,246,248],{"class":247},"spNyl","async",[226,250,252],{"class":251},"sMK4o"," (",[226,254,256],{"class":255},"sHdIc","event",[226,258,259],{"class":251},")",[226,261,262],{"class":247}," =>",[226,264,265],{"class":251}," {\n",[226,267,269],{"class":228,"line":268},2,[226,270,272],{"class":271},"sHwdD","  // Get the request-scoped logger (auto-imported in Nuxt)\n",[226,274,276,279,282,285,288,291,293],{"class":228,"line":275},3,[226,277,278],{"class":247},"  const",[226,280,281],{"class":243}," log",[226,283,284],{"class":251}," =",[226,286,287],{"class":239}," useLogger",[226,289,244],{"class":290},"swJcz",[226,292,256],{"class":243},[226,294,295],{"class":290},")\n",[226,297,299],{"class":228,"line":298},4,[226,300,302],{"emptyLinePlaceholder":301},true,"\n",[226,304,306],{"class":228,"line":305},5,[226,307,308],{"class":271},"  // Accumulate context throughout the request\n",[226,310,312,315,318,321,323,326,329,332,335,338,340,344,347,350,352,355,359,362,365,367],{"class":228,"line":311},6,[226,313,314],{"class":243},"  log",[226,316,317],{"class":251},".",[226,319,320],{"class":239},"set",[226,322,244],{"class":290},[226,324,325],{"class":251},"{",[226,327,328],{"class":290}," user",[226,330,331],{"class":251},":",[226,333,334],{"class":251}," {",[226,336,337],{"class":290}," id",[226,339,331],{"class":251},[226,341,343],{"class":342},"sbssI"," 1",[226,345,346],{"class":251},",",[226,348,349],{"class":290}," plan",[226,351,331],{"class":251},[226,353,354],{"class":251}," '",[226,356,358],{"class":357},"sfazB","pro",[226,360,361],{"class":251},"'",[226,363,364],{"class":251}," }",[226,366,364],{"class":251},[226,368,295],{"class":290},[226,370,372,374,376,378,380,382,385,387,389,392,394,397,399,402,404,407,409,411],{"class":228,"line":371},7,[226,373,314],{"class":243},[226,375,317],{"class":251},[226,377,320],{"class":239},[226,379,244],{"class":290},[226,381,325],{"class":251},[226,383,384],{"class":290}," cart",[226,386,331],{"class":251},[226,388,334],{"class":251},[226,390,391],{"class":290}," items",[226,393,331],{"class":251},[226,395,396],{"class":342}," 3",[226,398,346],{"class":251},[226,400,401],{"class":290}," total",[226,403,331],{"class":251},[226,405,406],{"class":342}," 9999",[226,408,364],{"class":251},[226,410,364],{"class":251},[226,412,295],{"class":290},[226,414,416],{"class":228,"line":415},8,[226,417,302],{"emptyLinePlaceholder":301},[226,419,421],{"class":228,"line":420},9,[226,422,423],{"class":271},"  // Process checkout...\n",[226,425,427,429,432,434,437,440],{"class":228,"line":426},10,[226,428,278],{"class":247},[226,430,431],{"class":243}," order",[226,433,284],{"class":251},[226,435,436],{"class":232}," await",[226,438,439],{"class":239}," processCheckout",[226,441,442],{"class":290},"()\n",[226,444,446,448,450,452,454,456,459,461,463,465,468,470],{"class":228,"line":445},11,[226,447,314],{"class":243},[226,449,317],{"class":251},[226,451,320],{"class":239},[226,453,244],{"class":290},[226,455,325],{"class":251},[226,457,458],{"class":290}," orderId",[226,460,331],{"class":251},[226,462,431],{"class":243},[226,464,317],{"class":251},[226,466,467],{"class":243},"id",[226,469,364],{"class":251},[226,471,295],{"class":290},[226,473,475],{"class":228,"line":474},12,[226,476,302],{"emptyLinePlaceholder":301},[226,478,480],{"class":228,"line":479},13,[226,481,482],{"class":271},"  // Logger auto-emits when request ends - nothing else to do!\n",[226,484,486,489,491,494,496,500,502,504,506,508,510,512],{"class":228,"line":485},14,[226,487,488],{"class":232},"  return",[226,490,334],{"class":251},[226,492,493],{"class":290}," success",[226,495,331],{"class":251},[226,497,499],{"class":498},"sfNiH"," true",[226,501,346],{"class":251},[226,503,458],{"class":290},[226,505,331],{"class":251},[226,507,431],{"class":243},[226,509,317],{"class":251},[226,511,467],{"class":243},[226,513,514],{"class":251}," }\n",[226,516,518,521],{"class":228,"line":517},15,[226,519,520],{"class":251},"}",[226,522,295],{"class":243},[216,524,529],{"className":525,"code":526,"filename":527,"language":528,"meta":222,"style":222},"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",[186,530,531,543,560,579],{"__ignoreMap":222},[226,532,533,537,540],{"class":228,"line":229},[226,534,536],{"class":535},"sBMFI","10:23:45.612",[226,538,539],{"class":357}," INFO",[226,541,542],{"class":243}," [my-app] POST /api/checkout 200 in 234ms\n",[226,544,545,548,551,554,557],{"class":228,"line":268},[226,546,547],{"class":535},"  ├─",[226,549,550],{"class":357}," user:",[226,552,553],{"class":357}," id=",[226,555,556],{"class":342},"1",[226,558,559],{"class":357}," plan=pro\n",[226,561,562,564,567,570,573,576],{"class":228,"line":275},[226,563,547],{"class":535},[226,565,566],{"class":357}," cart:",[226,568,569],{"class":357}," items=",[226,571,572],{"class":342},"3",[226,574,575],{"class":357}," total=",[226,577,578],{"class":342},"9999\n",[226,580,581,584,587],{"class":228,"line":298},[226,582,583],{"class":535},"  └─",[226,585,586],{"class":357}," orderId:",[226,588,589],{"class":357}," ord_abc123\n",[176,591,594,595,598],{"color":592,"icon":593},"success","i-lucide-check","The logger automatically emits when the request ends. No manual ",[186,596,597],{},"emit()"," call needed.",[600,601,603],"h3",{"id":602},"when-to-use-uselogger-vs-createlogger-vs-log","When to use useLogger vs createLogger vs log",[605,606,607,627],"table",{},[608,609,610],"thead",{},[611,612,613,618,623],"tr",{},[614,615,207,616],"th",{},[186,617,210],{},[614,619,207,620],{},[186,621,622],{},"createLogger()",[614,624,207,625],{},[186,626,192],{},[628,629,630,642,653],"tbody",{},[611,631,632,636,639],{},[633,634,635],"td",{},"API routes, middleware, server plugins",[633,637,638],{},"Scripts, jobs, workers, queues, workflows",[633,640,641],{},"One-off events outside request context",[611,643,644,647,650],{},[633,645,646],{},"When you need to accumulate context in a request",[633,648,649],{},"When you need to accumulate context outside a request",[633,651,652],{},"Quick debugging messages",[611,654,655,658,661],{},[633,656,657],{},"For wide events (one log per request)",[633,659,660],{},"For wide events (one log per operation)",[633,662,663],{},"Client-side logging",[600,665,667],{"id":666},"service-identification","Service Identification",[172,669,670],{},"In multi-service architectures, differentiate which service a log belongs to using either route-based configuration or explicit service names.",[672,673,675],"h4",{"id":674},"route-based-configuration","Route-Based Configuration",[172,677,678,679,331],{},"Configure service names per route pattern in your ",[186,680,681],{},"nuxt.config.ts",[216,683,685],{"className":218,"code":684,"filename":681,"language":221,"meta":222,"style":222},"export default defineNuxtConfig({\n  modules: ['evlog/nuxt'],\n\n  evlog: {\n    env: {\n      service: 'default-service', // Fallback service name\n    },\n    routes: {\n      '/api/auth/**': { service: 'auth-service' },\n      '/api/payment/**': { service: 'payment-service' },\n      '/api/booking/**': { service: 'booking-service' },\n    },\n  },\n})\n",[186,686,687,701,724,728,737,746,765,770,779,808,834,860,864,869],{"__ignoreMap":222},[226,688,689,691,693,696,698],{"class":228,"line":229},[226,690,233],{"class":232},[226,692,236],{"class":232},[226,694,695],{"class":239}," defineNuxtConfig",[226,697,244],{"class":243},[226,699,700],{"class":251},"{\n",[226,702,703,706,708,711,713,716,718,721],{"class":228,"line":268},[226,704,705],{"class":290},"  modules",[226,707,331],{"class":251},[226,709,710],{"class":243}," [",[226,712,361],{"class":251},[226,714,715],{"class":357},"evlog/nuxt",[226,717,361],{"class":251},[226,719,720],{"class":243},"]",[226,722,723],{"class":251},",\n",[226,725,726],{"class":228,"line":275},[226,727,302],{"emptyLinePlaceholder":301},[226,729,730,733,735],{"class":228,"line":298},[226,731,732],{"class":290},"  evlog",[226,734,331],{"class":251},[226,736,265],{"class":251},[226,738,739,742,744],{"class":228,"line":305},[226,740,741],{"class":290},"    env",[226,743,331],{"class":251},[226,745,265],{"class":251},[226,747,748,751,753,755,758,760,762],{"class":228,"line":311},[226,749,750],{"class":290},"      service",[226,752,331],{"class":251},[226,754,354],{"class":251},[226,756,757],{"class":357},"default-service",[226,759,361],{"class":251},[226,761,346],{"class":251},[226,763,764],{"class":271}," // Fallback service name\n",[226,766,767],{"class":228,"line":371},[226,768,769],{"class":251},"    },\n",[226,771,772,775,777],{"class":228,"line":415},[226,773,774],{"class":290},"    routes",[226,776,331],{"class":251},[226,778,265],{"class":251},[226,780,781,784,787,789,791,793,796,798,800,803,805],{"class":228,"line":420},[226,782,783],{"class":251},"      '",[226,785,786],{"class":290},"/api/auth/**",[226,788,361],{"class":251},[226,790,331],{"class":251},[226,792,334],{"class":251},[226,794,795],{"class":290}," service",[226,797,331],{"class":251},[226,799,354],{"class":251},[226,801,802],{"class":357},"auth-service",[226,804,361],{"class":251},[226,806,807],{"class":251}," },\n",[226,809,810,812,815,817,819,821,823,825,827,830,832],{"class":228,"line":426},[226,811,783],{"class":251},[226,813,814],{"class":290},"/api/payment/**",[226,816,361],{"class":251},[226,818,331],{"class":251},[226,820,334],{"class":251},[226,822,795],{"class":290},[226,824,331],{"class":251},[226,826,354],{"class":251},[226,828,829],{"class":357},"payment-service",[226,831,361],{"class":251},[226,833,807],{"class":251},[226,835,836,838,841,843,845,847,849,851,853,856,858],{"class":228,"line":445},[226,837,783],{"class":251},[226,839,840],{"class":290},"/api/booking/**",[226,842,361],{"class":251},[226,844,331],{"class":251},[226,846,334],{"class":251},[226,848,795],{"class":290},[226,850,331],{"class":251},[226,852,354],{"class":251},[226,854,855],{"class":357},"booking-service",[226,857,361],{"class":251},[226,859,807],{"class":251},[226,861,862],{"class":228,"line":474},[226,863,769],{"class":251},[226,865,866],{"class":228,"line":479},[226,867,868],{"class":251},"  },\n",[226,870,871,873],{"class":228,"line":485},[226,872,520],{"class":251},[226,874,295],{"class":243},[172,876,877],{},"Logs from routes matching these patterns will automatically include the configured service name:",[216,879,882],{"className":525,"code":880,"filename":881,"language":528,"meta":222,"style":222},"21:57:10.442 INFO [auth-service] POST /api/auth/login 200 in 1ms\n  ├─ requestId: 88ced16a-bef2-4483-86cb-2b4fb677ea52\n  ├─ user: id=user_123 email=demo@example.com\n  └─ action: login\n","Output",[186,883,884,894,904,916],{"__ignoreMap":222},[226,885,886,889,891],{"class":228,"line":229},[226,887,888],{"class":535},"21:57:10.442",[226,890,539],{"class":357},[226,892,893],{"class":243}," [auth-service] POST /api/auth/login 200 in 1ms\n",[226,895,896,898,901],{"class":228,"line":268},[226,897,547],{"class":535},[226,899,900],{"class":357}," requestId:",[226,902,903],{"class":357}," 88ced16a-bef2-4483-86cb-2b4fb677ea52\n",[226,905,906,908,910,913],{"class":228,"line":275},[226,907,547],{"class":535},[226,909,550],{"class":357},[226,911,912],{"class":357}," id=user_123",[226,914,915],{"class":357}," email=demo@example.com\n",[226,917,918,920,923],{"class":228,"line":298},[226,919,583],{"class":535},[226,921,922],{"class":357}," action:",[226,924,925],{"class":357}," login\n",[672,927,929],{"id":928},"explicit-service-parameter","Explicit Service Parameter",[172,931,932,933,331],{},"Override the service name for specific routes using the second parameter of ",[186,934,188],{},[216,936,939],{"className":218,"code":937,"filename":938,"language":221,"meta":222,"style":222},"export default defineEventHandler((event) => {\n  // Explicitly set service name for this handler\n  const log = useLogger(event, 'legacy-service')\n\n  log.set({ action: 'process_legacy_request' })\n\n  return { success: true }\n})\n","server/api/legacy/process.post.ts",[186,940,941,961,966,991,995,1023,1027,1041],{"__ignoreMap":222},[226,942,943,945,947,949,951,953,955,957,959],{"class":228,"line":229},[226,944,233],{"class":232},[226,946,236],{"class":232},[226,948,240],{"class":239},[226,950,244],{"class":243},[226,952,244],{"class":251},[226,954,256],{"class":255},[226,956,259],{"class":251},[226,958,262],{"class":247},[226,960,265],{"class":251},[226,962,963],{"class":228,"line":268},[226,964,965],{"class":271},"  // Explicitly set service name for this handler\n",[226,967,968,970,972,974,976,978,980,982,984,987,989],{"class":228,"line":275},[226,969,278],{"class":247},[226,971,281],{"class":243},[226,973,284],{"class":251},[226,975,287],{"class":239},[226,977,244],{"class":290},[226,979,256],{"class":243},[226,981,346],{"class":251},[226,983,354],{"class":251},[226,985,986],{"class":357},"legacy-service",[226,988,361],{"class":251},[226,990,295],{"class":290},[226,992,993],{"class":228,"line":298},[226,994,302],{"emptyLinePlaceholder":301},[226,996,997,999,1001,1003,1005,1007,1010,1012,1014,1017,1019,1021],{"class":228,"line":305},[226,998,314],{"class":243},[226,1000,317],{"class":251},[226,1002,320],{"class":239},[226,1004,244],{"class":290},[226,1006,325],{"class":251},[226,1008,1009],{"class":290}," action",[226,1011,331],{"class":251},[226,1013,354],{"class":251},[226,1015,1016],{"class":357},"process_legacy_request",[226,1018,361],{"class":251},[226,1020,364],{"class":251},[226,1022,295],{"class":290},[226,1024,1025],{"class":228,"line":311},[226,1026,302],{"emptyLinePlaceholder":301},[226,1028,1029,1031,1033,1035,1037,1039],{"class":228,"line":371},[226,1030,488],{"class":232},[226,1032,334],{"class":251},[226,1034,493],{"class":290},[226,1036,331],{"class":251},[226,1038,499],{"class":498},[226,1040,514],{"class":251},[226,1042,1043,1045],{"class":228,"line":415},[226,1044,520],{"class":251},[226,1046,295],{"class":243},[176,1048,1049,1052,1053,1055,1056,1059],{"color":178,"icon":13},[181,1050,1051],{},"Priority order:"," Explicit ",[186,1054,188],{}," parameter > Route configuration > ",[186,1057,1058],{},"env.service"," > Auto-detected from environment",[201,1061,1063],{"id":1062},"createlogger-standalone","createLogger (Standalone)",[172,1065,207,1066,1068],{},[186,1067,622],{}," when you need a wide event logger outside of an HTTP request context — scripts, background jobs, queue workers, workflows, etc.",[213,1070,1071,1276],{},[216,1072,1075],{"className":218,"code":1073,"filename":1074,"language":221,"meta":222,"style":222},"import { initLogger, createLogger } from 'evlog'\n\ninitLogger({ env: { service: 'sync-worker' } })\n\nconst log = createLogger({ jobId: job.id, queue: 'emails' })\n\nlog.set({ batch: { size: 50 } })\nlog.set({ batch: { processed: 50 } })\nlog.emit() // Manual emit required\n","scripts/sync-job.ts",[186,1076,1077,1105,1109,1142,1146,1193,1197,1230,1261],{"__ignoreMap":222},[226,1078,1079,1082,1084,1087,1089,1092,1094,1097,1099,1102],{"class":228,"line":229},[226,1080,1081],{"class":232},"import",[226,1083,334],{"class":251},[226,1085,1086],{"class":243}," initLogger",[226,1088,346],{"class":251},[226,1090,1091],{"class":243}," createLogger",[226,1093,364],{"class":251},[226,1095,1096],{"class":232}," from",[226,1098,354],{"class":251},[226,1100,1101],{"class":357},"evlog",[226,1103,1104],{"class":251},"'\n",[226,1106,1107],{"class":228,"line":268},[226,1108,302],{"emptyLinePlaceholder":301},[226,1110,1111,1114,1116,1118,1121,1123,1125,1127,1129,1131,1134,1136,1138,1140],{"class":228,"line":275},[226,1112,1113],{"class":239},"initLogger",[226,1115,244],{"class":243},[226,1117,325],{"class":251},[226,1119,1120],{"class":290}," env",[226,1122,331],{"class":251},[226,1124,334],{"class":251},[226,1126,795],{"class":290},[226,1128,331],{"class":251},[226,1130,354],{"class":251},[226,1132,1133],{"class":357},"sync-worker",[226,1135,361],{"class":251},[226,1137,364],{"class":251},[226,1139,364],{"class":251},[226,1141,295],{"class":243},[226,1143,1144],{"class":228,"line":298},[226,1145,302],{"emptyLinePlaceholder":301},[226,1147,1148,1151,1154,1157,1159,1161,1163,1166,1168,1171,1173,1175,1177,1180,1182,1184,1187,1189,1191],{"class":228,"line":305},[226,1149,1150],{"class":247},"const",[226,1152,1153],{"class":243}," log ",[226,1155,1156],{"class":251},"=",[226,1158,1091],{"class":239},[226,1160,244],{"class":243},[226,1162,325],{"class":251},[226,1164,1165],{"class":290}," jobId",[226,1167,331],{"class":251},[226,1169,1170],{"class":243}," job",[226,1172,317],{"class":251},[226,1174,467],{"class":243},[226,1176,346],{"class":251},[226,1178,1179],{"class":290}," queue",[226,1181,331],{"class":251},[226,1183,354],{"class":251},[226,1185,1186],{"class":357},"emails",[226,1188,361],{"class":251},[226,1190,364],{"class":251},[226,1192,295],{"class":243},[226,1194,1195],{"class":228,"line":311},[226,1196,302],{"emptyLinePlaceholder":301},[226,1198,1199,1201,1203,1205,1207,1209,1212,1214,1216,1219,1221,1224,1226,1228],{"class":228,"line":371},[226,1200,192],{"class":243},[226,1202,317],{"class":251},[226,1204,320],{"class":239},[226,1206,244],{"class":243},[226,1208,325],{"class":251},[226,1210,1211],{"class":290}," batch",[226,1213,331],{"class":251},[226,1215,334],{"class":251},[226,1217,1218],{"class":290}," size",[226,1220,331],{"class":251},[226,1222,1223],{"class":342}," 50",[226,1225,364],{"class":251},[226,1227,364],{"class":251},[226,1229,295],{"class":243},[226,1231,1232,1234,1236,1238,1240,1242,1244,1246,1248,1251,1253,1255,1257,1259],{"class":228,"line":415},[226,1233,192],{"class":243},[226,1235,317],{"class":251},[226,1237,320],{"class":239},[226,1239,244],{"class":243},[226,1241,325],{"class":251},[226,1243,1211],{"class":290},[226,1245,331],{"class":251},[226,1247,334],{"class":251},[226,1249,1250],{"class":290}," processed",[226,1252,331],{"class":251},[226,1254,1223],{"class":342},[226,1256,364],{"class":251},[226,1258,364],{"class":251},[226,1260,295],{"class":243},[226,1262,1263,1265,1267,1270,1273],{"class":228,"line":420},[226,1264,192],{"class":243},[226,1266,317],{"class":251},[226,1268,1269],{"class":239},"emit",[226,1271,1272],{"class":243},"() ",[226,1274,1275],{"class":271},"// Manual emit required\n",[216,1277,1279],{"className":525,"code":1278,"filename":527,"language":528,"meta":222,"style":222},"10:23:45.612 INFO [sync-worker] in 1204ms\n  ├─ jobId: job_abc123\n  ├─ queue: emails\n  └─ batch: size=50 processed=50\n",[186,1280,1281,1290,1300,1310],{"__ignoreMap":222},[226,1282,1283,1285,1287],{"class":228,"line":229},[226,1284,536],{"class":535},[226,1286,539],{"class":357},[226,1288,1289],{"class":243}," [sync-worker] in 1204ms\n",[226,1291,1292,1294,1297],{"class":228,"line":268},[226,1293,547],{"class":535},[226,1295,1296],{"class":357}," jobId:",[226,1298,1299],{"class":357}," job_abc123\n",[226,1301,1302,1304,1307],{"class":228,"line":275},[226,1303,547],{"class":535},[226,1305,1306],{"class":357}," queue:",[226,1308,1309],{"class":357}," emails\n",[226,1311,1312,1314,1317,1320,1323,1326],{"class":228,"line":298},[226,1313,583],{"class":535},[226,1315,1316],{"class":357}," batch:",[226,1318,1319],{"class":357}," size=",[226,1321,1322],{"class":342},"50",[226,1324,1325],{"class":357}," processed=",[226,1327,1328],{"class":342},"50\n",[172,1330,1331,1333,1334,1337,1338,189,1340,189,1343,189,1345,189,1348,189,1350,1353],{},[186,1332,622],{}," accepts any initial context as a plain object. It returns the same ",[186,1335,1336],{},"RequestLogger"," interface (",[186,1339,320],{},[186,1341,1342],{},"error",[186,1344,178],{},[186,1346,1347],{},"warn",[186,1349,1269],{},[186,1351,1352],{},"getContext",").",[172,1355,1356,1357,1360,1361,189,1364,1367,1368,331],{},"For HTTP request contexts specifically, use ",[186,1358,1359],{},"createRequestLogger()"," which pre-populates ",[186,1362,1363],{},"method",[186,1365,1366],{},"path",", and ",[186,1369,1370],{},"requestId",[216,1372,1374],{"className":218,"code":1373,"language":221,"meta":222,"style":222},"import { createRequestLogger } from 'evlog'\n\nconst log = createRequestLogger({ method: 'POST', path: '/api/checkout' })\n",[186,1375,1376,1395,1399],{"__ignoreMap":222},[226,1377,1378,1380,1382,1385,1387,1389,1391,1393],{"class":228,"line":229},[226,1379,1081],{"class":232},[226,1381,334],{"class":251},[226,1383,1384],{"class":243}," createRequestLogger",[226,1386,364],{"class":251},[226,1388,1096],{"class":232},[226,1390,354],{"class":251},[226,1392,1101],{"class":357},[226,1394,1104],{"class":251},[226,1396,1397],{"class":228,"line":268},[226,1398,302],{"emptyLinePlaceholder":301},[226,1400,1401,1403,1405,1407,1409,1411,1413,1416,1418,1420,1423,1425,1427,1430,1432,1434,1437,1439,1441],{"class":228,"line":275},[226,1402,1150],{"class":247},[226,1404,1153],{"class":243},[226,1406,1156],{"class":251},[226,1408,1384],{"class":239},[226,1410,244],{"class":243},[226,1412,325],{"class":251},[226,1414,1415],{"class":290}," method",[226,1417,331],{"class":251},[226,1419,354],{"class":251},[226,1421,1422],{"class":357},"POST",[226,1424,361],{"class":251},[226,1426,346],{"class":251},[226,1428,1429],{"class":290}," path",[226,1431,331],{"class":251},[226,1433,354],{"class":251},[226,1435,1436],{"class":357},"/api/checkout",[226,1438,361],{"class":251},[226,1440,364],{"class":251},[226,1442,295],{"class":243},[176,1444,1445,1446,1449,1450,1453,1454,1457],{"color":178,"icon":13},"In standalone mode (both ",[186,1447,1448],{},"createLogger"," and ",[186,1451,1452],{},"createRequestLogger","), you must call ",[186,1455,1456],{},"log.emit()"," manually. In Nuxt/Nitro, this happens automatically at request end.",[201,1459,1461],{"id":1460},"createerror-structured-errors","createError (Structured Errors)",[172,1463,207,1464,1467],{},[186,1465,1466],{},"createError()"," to throw errors with actionable context:",[213,1469,1470,1597],{},[216,1471,1474],{"className":218,"code":1472,"filename":1473,"language":221,"meta":222,"style":222},"// 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",[186,1475,1476,1481,1500,1504,1515,1531,1543,1559,1575,1591],{"__ignoreMap":222},[226,1477,1478],{"class":228,"line":229},[226,1479,1480],{"class":271},"// server/api/checkout.post.ts\n",[226,1482,1483,1485,1487,1490,1492,1494,1496,1498],{"class":228,"line":268},[226,1484,1081],{"class":232},[226,1486,334],{"class":251},[226,1488,1489],{"class":243}," createError",[226,1491,364],{"class":251},[226,1493,1096],{"class":232},[226,1495,354],{"class":251},[226,1497,1101],{"class":357},[226,1499,1104],{"class":251},[226,1501,1502],{"class":228,"line":275},[226,1503,302],{"emptyLinePlaceholder":301},[226,1505,1506,1509,1511,1513],{"class":228,"line":298},[226,1507,1508],{"class":232},"throw",[226,1510,1489],{"class":239},[226,1512,244],{"class":243},[226,1514,700],{"class":251},[226,1516,1517,1520,1522,1524,1527,1529],{"class":228,"line":305},[226,1518,1519],{"class":290},"  message",[226,1521,331],{"class":251},[226,1523,354],{"class":251},[226,1525,1526],{"class":357},"Payment failed",[226,1528,361],{"class":251},[226,1530,723],{"class":251},[226,1532,1533,1536,1538,1541],{"class":228,"line":311},[226,1534,1535],{"class":290},"  status",[226,1537,331],{"class":251},[226,1539,1540],{"class":342}," 402",[226,1542,723],{"class":251},[226,1544,1545,1548,1550,1552,1555,1557],{"class":228,"line":371},[226,1546,1547],{"class":290},"  why",[226,1549,331],{"class":251},[226,1551,354],{"class":251},[226,1553,1554],{"class":357},"Card declined by issuer",[226,1556,361],{"class":251},[226,1558,723],{"class":251},[226,1560,1561,1564,1566,1568,1571,1573],{"class":228,"line":415},[226,1562,1563],{"class":290},"  fix",[226,1565,331],{"class":251},[226,1567,354],{"class":251},[226,1569,1570],{"class":357},"Try a different payment method",[226,1572,361],{"class":251},[226,1574,723],{"class":251},[226,1576,1577,1580,1582,1584,1587,1589],{"class":228,"line":420},[226,1578,1579],{"class":290},"  link",[226,1581,331],{"class":251},[226,1583,354],{"class":251},[226,1585,1586],{"class":357},"https://docs.example.com/payments/declined",[226,1588,361],{"class":251},[226,1590,723],{"class":251},[226,1592,1593,1595],{"class":228,"line":426},[226,1594,520],{"class":251},[226,1596,295],{"class":243},[216,1598,1603],{"className":1599,"code":1600,"filename":1601,"language":1602,"meta":222,"style":222},"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",[186,1604,1605,1609,1626,1646,1659,1679,1698,1716,1721],{"__ignoreMap":222},[226,1606,1607],{"class":228,"line":229},[226,1608,700],{"class":251},[226,1610,1611,1614,1617,1620,1622,1624],{"class":228,"line":268},[226,1612,1613],{"class":251},"  \"",[226,1615,1616],{"class":247},"statusCode",[226,1618,1619],{"class":251},"\"",[226,1621,331],{"class":251},[226,1623,1540],{"class":342},[226,1625,723],{"class":251},[226,1627,1628,1630,1633,1635,1637,1640,1642,1644],{"class":228,"line":275},[226,1629,1613],{"class":251},[226,1631,1632],{"class":247},"message",[226,1634,1619],{"class":251},[226,1636,331],{"class":251},[226,1638,1639],{"class":251}," \"",[226,1641,1526],{"class":357},[226,1643,1619],{"class":251},[226,1645,723],{"class":251},[226,1647,1648,1650,1653,1655,1657],{"class":228,"line":298},[226,1649,1613],{"class":251},[226,1651,1652],{"class":247},"data",[226,1654,1619],{"class":251},[226,1656,331],{"class":251},[226,1658,265],{"class":251},[226,1660,1661,1664,1667,1669,1671,1673,1675,1677],{"class":228,"line":305},[226,1662,1663],{"class":251},"    \"",[226,1665,1666],{"class":535},"why",[226,1668,1619],{"class":251},[226,1670,331],{"class":251},[226,1672,1639],{"class":251},[226,1674,1554],{"class":357},[226,1676,1619],{"class":251},[226,1678,723],{"class":251},[226,1680,1681,1683,1686,1688,1690,1692,1694,1696],{"class":228,"line":311},[226,1682,1663],{"class":251},[226,1684,1685],{"class":535},"fix",[226,1687,1619],{"class":251},[226,1689,331],{"class":251},[226,1691,1639],{"class":251},[226,1693,1570],{"class":357},[226,1695,1619],{"class":251},[226,1697,723],{"class":251},[226,1699,1700,1702,1705,1707,1709,1711,1713],{"class":228,"line":371},[226,1701,1663],{"class":251},[226,1703,1704],{"class":535},"link",[226,1706,1619],{"class":251},[226,1708,331],{"class":251},[226,1710,1639],{"class":251},[226,1712,1586],{"class":357},[226,1714,1715],{"class":251},"\"\n",[226,1717,1718],{"class":228,"line":415},[226,1719,1720],{"class":251},"  }\n",[226,1722,1723],{"class":228,"line":420},[226,1724,1725],{"class":251},"}\n",[600,1727,1729],{"id":1728},"error-fields","Error Fields",[605,1731,1732,1745],{},[608,1733,1734],{},[611,1735,1736,1739,1742],{},[614,1737,1738],{},"Field",[614,1740,1741],{},"Required",[614,1743,1744],{},"Description",[628,1746,1747,1759,1772,1783,1794,1805],{},[611,1748,1749,1753,1756],{},[633,1750,1751],{},[186,1752,1632],{},[633,1754,1755],{},"Yes",[633,1757,1758],{},"What happened (user-facing)",[611,1760,1761,1766,1769],{},[633,1762,1763],{},[186,1764,1765],{},"status",[633,1767,1768],{},"No",[633,1770,1771],{},"HTTP status code (default: 500)",[611,1773,1774,1778,1780],{},[633,1775,1776],{},[186,1777,1666],{},[633,1779,1768],{},[633,1781,1782],{},"Technical reason (for debugging)",[611,1784,1785,1789,1791],{},[633,1786,1787],{},[186,1788,1685],{},[633,1790,1768],{},[633,1792,1793],{},"Actionable solution",[611,1795,1796,1800,1802],{},[633,1797,1798],{},[186,1799,1704],{},[633,1801,1768],{},[633,1803,1804],{},"Documentation URL for more info",[611,1806,1807,1812,1814],{},[633,1808,1809],{},[186,1810,1811],{},"cause",[633,1813,1768],{},[633,1815,1816],{},"Original error (if wrapping)",[600,1818,1820],{"id":1819},"frontend-integration","Frontend Integration",[172,1822,207,1823,1826],{},[186,1824,1825],{},"parseError()"," to extract all error fields on the client:",[216,1828,1831],{"className":218,"code":1829,"filename":1830,"language":221,"meta":222,"style":222},"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",[186,1832,1833,1852,1856,1883,1890,1933,1951,1969,1973,1978,1992,2007,2022,2037,2051,2107,2116,2124,2129,2147,2179,2185,2190],{"__ignoreMap":222},[226,1834,1835,1837,1839,1842,1844,1846,1848,1850],{"class":228,"line":229},[226,1836,1081],{"class":232},[226,1838,334],{"class":251},[226,1840,1841],{"class":243}," parseError",[226,1843,364],{"class":251},[226,1845,1096],{"class":232},[226,1847,354],{"class":251},[226,1849,1101],{"class":357},[226,1851,1104],{"class":251},[226,1853,1854],{"class":228,"line":268},[226,1855,302],{"emptyLinePlaceholder":301},[226,1857,1858,1860,1863,1866,1869,1871,1874,1876,1879,1881],{"class":228,"line":275},[226,1859,233],{"class":232},[226,1861,1862],{"class":247}," async",[226,1864,1865],{"class":247}," function",[226,1867,1868],{"class":239}," checkout",[226,1870,244],{"class":251},[226,1872,1873],{"class":255},"cart",[226,1875,331],{"class":251},[226,1877,1878],{"class":535}," Cart",[226,1880,259],{"class":251},[226,1882,265],{"class":251},[226,1884,1885,1888],{"class":228,"line":298},[226,1886,1887],{"class":232},"  try",[226,1889,265],{"class":251},[226,1891,1892,1895,1898,1900,1902,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1925,1927,1929,1931],{"class":228,"line":305},[226,1893,1894],{"class":232},"    await",[226,1896,1897],{"class":239}," $fetch",[226,1899,244],{"class":290},[226,1901,361],{"class":251},[226,1903,1436],{"class":357},[226,1905,361],{"class":251},[226,1907,346],{"class":251},[226,1909,334],{"class":251},[226,1911,1415],{"class":290},[226,1913,331],{"class":251},[226,1915,354],{"class":251},[226,1917,1422],{"class":357},[226,1919,361],{"class":251},[226,1921,346],{"class":251},[226,1923,1924],{"class":290}," body",[226,1926,331],{"class":251},[226,1928,384],{"class":243},[226,1930,364],{"class":251},[226,1932,295],{"class":290},[226,1934,1935,1938,1941,1943,1946,1949],{"class":228,"line":311},[226,1936,1937],{"class":251},"  }",[226,1939,1940],{"class":232}," catch",[226,1942,252],{"class":290},[226,1944,1945],{"class":243},"err",[226,1947,1948],{"class":290},") ",[226,1950,700],{"class":251},[226,1952,1953,1956,1959,1961,1963,1965,1967],{"class":228,"line":371},[226,1954,1955],{"class":247},"    const",[226,1957,1958],{"class":243}," error",[226,1960,284],{"class":251},[226,1962,1841],{"class":239},[226,1964,244],{"class":290},[226,1966,1945],{"class":243},[226,1968,295],{"class":290},[226,1970,1971],{"class":228,"line":415},[226,1972,302],{"emptyLinePlaceholder":301},[226,1974,1975],{"class":228,"line":420},[226,1976,1977],{"class":271},"    // Direct access to all fields\n",[226,1979,1980,1983,1985,1988,1990],{"class":228,"line":426},[226,1981,1982],{"class":243},"    toast",[226,1984,317],{"class":251},[226,1986,1987],{"class":239},"add",[226,1989,244],{"class":290},[226,1991,700],{"class":251},[226,1993,1994,1997,1999,2001,2003,2005],{"class":228,"line":445},[226,1995,1996],{"class":290},"      title",[226,1998,331],{"class":251},[226,2000,1958],{"class":243},[226,2002,317],{"class":251},[226,2004,1632],{"class":243},[226,2006,723],{"class":251},[226,2008,2009,2012,2014,2016,2018,2020],{"class":228,"line":474},[226,2010,2011],{"class":290},"      description",[226,2013,331],{"class":251},[226,2015,1958],{"class":243},[226,2017,317],{"class":251},[226,2019,1666],{"class":243},[226,2021,723],{"class":251},[226,2023,2024,2027,2029,2031,2033,2035],{"class":228,"line":479},[226,2025,2026],{"class":290},"      color",[226,2028,331],{"class":251},[226,2030,354],{"class":251},[226,2032,1342],{"class":357},[226,2034,361],{"class":251},[226,2036,723],{"class":251},[226,2038,2039,2042,2044,2046,2048],{"class":228,"line":485},[226,2040,2041],{"class":290},"      actions",[226,2043,331],{"class":251},[226,2045,1958],{"class":243},[226,2047,317],{"class":251},[226,2049,2050],{"class":243},"link\n",[226,2052,2053,2056,2058,2060,2063,2065,2067,2070,2072,2074,2077,2079,2082,2084,2087,2089,2092,2094,2096,2098,2100,2102,2104],{"class":228,"line":517},[226,2054,2055],{"class":251},"        ?",[226,2057,710],{"class":290},[226,2059,325],{"class":251},[226,2061,2062],{"class":290}," label",[226,2064,331],{"class":251},[226,2066,354],{"class":251},[226,2068,2069],{"class":357},"Learn more",[226,2071,361],{"class":251},[226,2073,346],{"class":251},[226,2075,2076],{"class":239}," onClick",[226,2078,331],{"class":251},[226,2080,2081],{"class":251}," ()",[226,2083,262],{"class":247},[226,2085,2086],{"class":243}," window",[226,2088,317],{"class":251},[226,2090,2091],{"class":239},"open",[226,2093,244],{"class":290},[226,2095,1342],{"class":243},[226,2097,317],{"class":251},[226,2099,1704],{"class":243},[226,2101,1948],{"class":290},[226,2103,520],{"class":251},[226,2105,2106],{"class":290},"]\n",[226,2108,2110,2113],{"class":228,"line":2109},16,[226,2111,2112],{"class":251},"        :",[226,2114,2115],{"class":251}," undefined,\n",[226,2117,2119,2122],{"class":228,"line":2118},17,[226,2120,2121],{"class":251},"    }",[226,2123,295],{"class":290},[226,2125,2127],{"class":228,"line":2126},18,[226,2128,302],{"emptyLinePlaceholder":301},[226,2130,2132,2135,2137,2139,2141,2143,2145],{"class":228,"line":2131},19,[226,2133,2134],{"class":232},"    if",[226,2136,252],{"class":290},[226,2138,1342],{"class":243},[226,2140,317],{"class":251},[226,2142,1685],{"class":243},[226,2144,1948],{"class":290},[226,2146,700],{"class":251},[226,2148,2150,2153,2155,2157,2159,2162,2165,2168,2170,2172,2174,2177],{"class":228,"line":2149},20,[226,2151,2152],{"class":243},"      console",[226,2154,317],{"class":251},[226,2156,178],{"class":239},[226,2158,244],{"class":290},[226,2160,2161],{"class":251},"`",[226,2163,2164],{"class":357},"Fix: ",[226,2166,2167],{"class":251},"${",[226,2169,1342],{"class":243},[226,2171,317],{"class":251},[226,2173,1685],{"class":243},[226,2175,2176],{"class":251},"}`",[226,2178,295],{"class":290},[226,2180,2182],{"class":228,"line":2181},21,[226,2183,2184],{"class":251},"    }\n",[226,2186,2188],{"class":228,"line":2187},22,[226,2189,1720],{"class":251},[226,2191,2193],{"class":228,"line":2192},23,[226,2194,1725],{"class":251},[201,2196,2198],{"id":2197},"log-simple-logging","log (Simple Logging)",[172,2200,2201],{},"For quick one-off logs anywhere in your code:",[213,2203,2204,2311],{},[216,2205,2208],{"className":218,"code":2206,"filename":2207,"language":221,"meta":222,"style":222},"// server/utils/auth.ts\nlog.info('auth', 'User logged in')\nlog.error({ action: 'payment', error: 'card_declined' })\nlog.warn('cache', 'Cache miss')\n","Server",[186,2209,2210,2215,2243,2283],{"__ignoreMap":222},[226,2211,2212],{"class":228,"line":229},[226,2213,2214],{"class":271},"// server/utils/auth.ts\n",[226,2216,2217,2219,2221,2223,2225,2227,2230,2232,2234,2236,2239,2241],{"class":228,"line":268},[226,2218,192],{"class":243},[226,2220,317],{"class":251},[226,2222,178],{"class":239},[226,2224,244],{"class":243},[226,2226,361],{"class":251},[226,2228,2229],{"class":357},"auth",[226,2231,361],{"class":251},[226,2233,346],{"class":251},[226,2235,354],{"class":251},[226,2237,2238],{"class":357},"User logged in",[226,2240,361],{"class":251},[226,2242,295],{"class":243},[226,2244,2245,2247,2249,2251,2253,2255,2257,2259,2261,2264,2266,2268,2270,2272,2274,2277,2279,2281],{"class":228,"line":275},[226,2246,192],{"class":243},[226,2248,317],{"class":251},[226,2250,1342],{"class":239},[226,2252,244],{"class":243},[226,2254,325],{"class":251},[226,2256,1009],{"class":290},[226,2258,331],{"class":251},[226,2260,354],{"class":251},[226,2262,2263],{"class":357},"payment",[226,2265,361],{"class":251},[226,2267,346],{"class":251},[226,2269,1958],{"class":290},[226,2271,331],{"class":251},[226,2273,354],{"class":251},[226,2275,2276],{"class":357},"card_declined",[226,2278,361],{"class":251},[226,2280,364],{"class":251},[226,2282,295],{"class":243},[226,2284,2285,2287,2289,2291,2293,2295,2298,2300,2302,2304,2307,2309],{"class":228,"line":298},[226,2286,192],{"class":243},[226,2288,317],{"class":251},[226,2290,1347],{"class":239},[226,2292,244],{"class":243},[226,2294,361],{"class":251},[226,2296,2297],{"class":357},"cache",[226,2299,361],{"class":251},[226,2301,346],{"class":251},[226,2303,354],{"class":251},[226,2305,2306],{"class":357},"Cache miss",[226,2308,361],{"class":251},[226,2310,295],{"class":243},[216,2312,2314],{"className":525,"code":2313,"filename":881,"language":528,"meta":222,"style":222},"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",[186,2315,2316,2323,2345],{"__ignoreMap":222},[226,2317,2318,2320],{"class":228,"line":229},[226,2319,536],{"class":535},[226,2321,2322],{"class":243}," [auth] User logged in\n",[226,2324,2325,2328,2331,2334,2336,2338,2340,2342],{"class":228,"line":268},[226,2326,2327],{"class":535},"10:23:45.613",[226,2329,2330],{"class":357}," ERROR",[226,2332,2333],{"class":243}," [my-app] action",[226,2335,1156],{"class":251},[226,2337,2263],{"class":357},[226,2339,1958],{"class":243},[226,2341,1156],{"class":251},[226,2343,2344],{"class":357},"card_declined\n",[226,2346,2347,2350],{"class":228,"line":275},[226,2348,2349],{"class":535},"10:23:45.614",[226,2351,2352],{"class":243}," [cache] Cache miss\n",[176,2354,2357,2358,2360,2361,2363],{"color":2355,"icon":2356},"warning","i-lucide-lightbulb","Prefer wide events (",[186,2359,188],{},") over simple logs when possible. Use ",[186,2362,192],{}," for truly one-off events that don't belong to a request.",[201,2365,2367],{"id":2366},"log-client-side","log (Client-Side)",[172,2369,2370,2371,2373],{},"The same ",[186,2372,192],{}," API works on the client side, outputting to the browser console:",[213,2375,2376,2604],{},[216,2377,2382],{"className":2378,"code":2379,"filename":2380,"language":2381,"meta":222,"style":222},"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",[186,2383,2384,2410,2424,2452,2456,2462,2494,2534,2548,2587,2591,2595],{"__ignoreMap":222},[226,2385,2386,2389,2392,2395,2398,2400,2402,2405,2407],{"class":228,"line":229},[226,2387,2388],{"class":251},"\u003C",[226,2390,2391],{"class":290},"script",[226,2393,2394],{"class":247}," setup",[226,2396,2397],{"class":247}," lang",[226,2399,1156],{"class":251},[226,2401,1619],{"class":251},[226,2403,2404],{"class":357},"ts",[226,2406,1619],{"class":251},[226,2408,2409],{"class":251},">\n",[226,2411,2412,2414,2416,2419,2422],{"class":228,"line":268},[226,2413,248],{"class":247},[226,2415,1865],{"class":247},[226,2417,2418],{"class":239}," handleCheckout",[226,2420,2421],{"class":251},"()",[226,2423,265],{"class":251},[226,2425,2426,2428,2430,2432,2434,2436,2439,2441,2443,2445,2448,2450],{"class":228,"line":275},[226,2427,314],{"class":243},[226,2429,317],{"class":251},[226,2431,178],{"class":239},[226,2433,244],{"class":290},[226,2435,361],{"class":251},[226,2437,2438],{"class":357},"checkout",[226,2440,361],{"class":251},[226,2442,346],{"class":251},[226,2444,354],{"class":251},[226,2446,2447],{"class":357},"User initiated checkout",[226,2449,361],{"class":251},[226,2451,295],{"class":290},[226,2453,2454],{"class":228,"line":298},[226,2455,302],{"emptyLinePlaceholder":301},[226,2457,2458,2460],{"class":228,"line":305},[226,2459,1887],{"class":232},[226,2461,265],{"class":251},[226,2463,2464,2466,2468,2470,2472,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492],{"class":228,"line":311},[226,2465,1894],{"class":232},[226,2467,1897],{"class":239},[226,2469,244],{"class":290},[226,2471,361],{"class":251},[226,2473,1436],{"class":357},[226,2475,361],{"class":251},[226,2477,346],{"class":251},[226,2479,334],{"class":251},[226,2481,1415],{"class":290},[226,2483,331],{"class":251},[226,2485,354],{"class":251},[226,2487,1422],{"class":357},[226,2489,361],{"class":251},[226,2491,364],{"class":251},[226,2493,295],{"class":290},[226,2495,2496,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517,2519,2522,2524,2526,2528,2530,2532],{"class":228,"line":371},[226,2497,2498],{"class":243},"    log",[226,2500,317],{"class":251},[226,2502,178],{"class":239},[226,2504,244],{"class":290},[226,2506,325],{"class":251},[226,2508,1009],{"class":290},[226,2510,331],{"class":251},[226,2512,354],{"class":251},[226,2514,2438],{"class":357},[226,2516,361],{"class":251},[226,2518,346],{"class":251},[226,2520,2521],{"class":290}," status",[226,2523,331],{"class":251},[226,2525,354],{"class":251},[226,2527,592],{"class":357},[226,2529,361],{"class":251},[226,2531,364],{"class":251},[226,2533,295],{"class":290},[226,2535,2536,2538,2540,2542,2544,2546],{"class":228,"line":415},[226,2537,1937],{"class":251},[226,2539,1940],{"class":232},[226,2541,252],{"class":290},[226,2543,1945],{"class":243},[226,2545,1948],{"class":290},[226,2547,700],{"class":251},[226,2549,2550,2552,2554,2556,2558,2560,2562,2564,2566,2568,2570,2572,2574,2576,2578,2581,2583,2585],{"class":228,"line":420},[226,2551,2498],{"class":243},[226,2553,317],{"class":251},[226,2555,1342],{"class":239},[226,2557,244],{"class":290},[226,2559,325],{"class":251},[226,2561,1009],{"class":290},[226,2563,331],{"class":251},[226,2565,354],{"class":251},[226,2567,2438],{"class":357},[226,2569,361],{"class":251},[226,2571,346],{"class":251},[226,2573,1958],{"class":290},[226,2575,331],{"class":251},[226,2577,354],{"class":251},[226,2579,2580],{"class":357},"failed",[226,2582,361],{"class":251},[226,2584,364],{"class":251},[226,2586,295],{"class":290},[226,2588,2589],{"class":228,"line":426},[226,2590,1720],{"class":251},[226,2592,2593],{"class":228,"line":445},[226,2594,1725],{"class":251},[226,2596,2597,2600,2602],{"class":228,"line":474},[226,2598,2599],{"class":251},"\u003C/",[226,2601,2391],{"class":290},[226,2603,2409],{"class":251},[216,2605,2608],{"className":218,"code":2606,"filename":2607,"language":221,"meta":222,"style":222},"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",[186,2609,2610,2623,2666,2699,2711,2739,2743,2747,2751,2761],{"__ignoreMap":222},[226,2611,2612,2614,2616,2619,2621],{"class":228,"line":229},[226,2613,233],{"class":232},[226,2615,1865],{"class":247},[226,2617,2618],{"class":239}," useAnalytics",[226,2620,2421],{"class":251},[226,2622,265],{"class":251},[226,2624,2625,2628,2631,2633,2635,2637,2640,2642,2645,2648,2651,2653,2656,2658,2661,2664],{"class":228,"line":268},[226,2626,2627],{"class":247},"  function",[226,2629,2630],{"class":239}," trackEvent",[226,2632,244],{"class":251},[226,2634,256],{"class":255},[226,2636,331],{"class":251},[226,2638,2639],{"class":535}," string",[226,2641,346],{"class":251},[226,2643,2644],{"class":255}," data",[226,2646,2647],{"class":251},"?:",[226,2649,2650],{"class":535}," Record",[226,2652,2388],{"class":251},[226,2654,2655],{"class":535},"string",[226,2657,346],{"class":251},[226,2659,2660],{"class":535}," unknown",[226,2662,2663],{"class":251},">)",[226,2665,265],{"class":251},[226,2667,2668,2670,2672,2674,2676,2678,2681,2683,2685,2688,2691,2693,2695,2697],{"class":228,"line":275},[226,2669,2498],{"class":243},[226,2671,317],{"class":251},[226,2673,178],{"class":239},[226,2675,244],{"class":290},[226,2677,361],{"class":251},[226,2679,2680],{"class":357},"analytics",[226,2682,361],{"class":251},[226,2684,346],{"class":251},[226,2686,2687],{"class":251}," `",[226,2689,2690],{"class":357},"Event: ",[226,2692,2167],{"class":251},[226,2694,256],{"class":243},[226,2696,2176],{"class":251},[226,2698,295],{"class":290},[226,2700,2701,2703,2705,2707,2709],{"class":228,"line":298},[226,2702,2134],{"class":232},[226,2704,252],{"class":290},[226,2706,1652],{"class":243},[226,2708,1948],{"class":290},[226,2710,700],{"class":251},[226,2712,2713,2716,2718,2721,2723,2725,2728,2730,2733,2735,2737],{"class":228,"line":305},[226,2714,2715],{"class":243},"      log",[226,2717,317],{"class":251},[226,2719,2720],{"class":239},"debug",[226,2722,244],{"class":290},[226,2724,325],{"class":251},[226,2726,2727],{"class":243}," event",[226,2729,346],{"class":251},[226,2731,2732],{"class":251}," ...",[226,2734,1652],{"class":243},[226,2736,364],{"class":251},[226,2738,295],{"class":290},[226,2740,2741],{"class":228,"line":311},[226,2742,2184],{"class":251},[226,2744,2745],{"class":228,"line":371},[226,2746,1720],{"class":251},[226,2748,2749],{"class":228,"line":415},[226,2750,302],{"emptyLinePlaceholder":301},[226,2752,2753,2755,2757,2759],{"class":228,"line":420},[226,2754,488],{"class":232},[226,2756,334],{"class":251},[226,2758,2630],{"class":243},[226,2760,514],{"class":251},[226,2762,2763],{"class":228,"line":426},[226,2764,1725],{"class":251},[172,2766,2767],{},"In pretty mode (development), client logs appear with colored tags in the browser console:",[216,2769,2774],{"className":2770,"code":2772,"language":2773},[2771],"language-text","[my-app] info { action: 'checkout', status: 'success' }\n","text",[186,2775,2772],{"__ignoreMap":222},[176,2777,2778,2779,2781],{"color":178,"icon":13},"Client-side ",[186,2780,192],{}," is designed for debugging and development. For production analytics, use dedicated services like Plausible, PostHog, or Mixpanel.",[201,2783,2785],{"id":2784},"wide-event-fields","Wide Event Fields",[172,2787,2788],{},"Every wide event should include context from different layers:",[213,2790,2791,3007],{},[216,2792,2794],{"className":218,"code":2793,"filename":1473,"language":221,"meta":222,"style":222},"// 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",[186,2795,2796,2800,2813,2817,2822,2860,2864,2869,2905,2909,2914,2965,2969,2974],{"__ignoreMap":222},[226,2797,2798],{"class":228,"line":229},[226,2799,1480],{"class":271},[226,2801,2802,2804,2806,2808,2810],{"class":228,"line":268},[226,2803,1150],{"class":247},[226,2805,1153],{"class":243},[226,2807,1156],{"class":251},[226,2809,287],{"class":239},[226,2811,2812],{"class":243},"(event)\n",[226,2814,2815],{"class":228,"line":275},[226,2816,302],{"emptyLinePlaceholder":301},[226,2818,2819],{"class":228,"line":298},[226,2820,2821],{"class":271},"// Request context (often auto-populated)\n",[226,2823,2824,2826,2828,2830,2832,2834,2836,2838,2840,2842,2844,2846,2848,2850,2852,2854,2856,2858],{"class":228,"line":305},[226,2825,192],{"class":243},[226,2827,317],{"class":251},[226,2829,320],{"class":239},[226,2831,244],{"class":243},[226,2833,325],{"class":251},[226,2835,1415],{"class":290},[226,2837,331],{"class":251},[226,2839,354],{"class":251},[226,2841,1422],{"class":357},[226,2843,361],{"class":251},[226,2845,346],{"class":251},[226,2847,1429],{"class":290},[226,2849,331],{"class":251},[226,2851,354],{"class":251},[226,2853,1436],{"class":357},[226,2855,361],{"class":251},[226,2857,364],{"class":251},[226,2859,295],{"class":243},[226,2861,2862],{"class":228,"line":311},[226,2863,302],{"emptyLinePlaceholder":301},[226,2865,2866],{"class":228,"line":371},[226,2867,2868],{"class":271},"// User context\n",[226,2870,2871,2873,2875,2877,2879,2881,2884,2886,2888,2890,2893,2895,2897,2899,2901,2903],{"class":228,"line":415},[226,2872,192],{"class":243},[226,2874,317],{"class":251},[226,2876,320],{"class":239},[226,2878,244],{"class":243},[226,2880,325],{"class":251},[226,2882,2883],{"class":290}," userId",[226,2885,331],{"class":251},[226,2887,343],{"class":342},[226,2889,346],{"class":251},[226,2891,2892],{"class":290}," subscription",[226,2894,331],{"class":251},[226,2896,354],{"class":251},[226,2898,358],{"class":357},[226,2900,361],{"class":251},[226,2902,364],{"class":251},[226,2904,295],{"class":243},[226,2906,2907],{"class":228,"line":420},[226,2908,302],{"emptyLinePlaceholder":301},[226,2910,2911],{"class":228,"line":426},[226,2912,2913],{"class":271},"// Business context\n",[226,2915,2916,2918,2920,2922,2924,2926,2928,2930,2932,2934,2936,2938,2940,2942,2944,2946,2949,2952,2954,2956,2959,2961,2963],{"class":228,"line":445},[226,2917,192],{"class":243},[226,2919,317],{"class":251},[226,2921,320],{"class":239},[226,2923,244],{"class":243},[226,2925,325],{"class":251},[226,2927,384],{"class":290},[226,2929,331],{"class":251},[226,2931,334],{"class":251},[226,2933,391],{"class":290},[226,2935,331],{"class":251},[226,2937,396],{"class":342},[226,2939,346],{"class":251},[226,2941,401],{"class":290},[226,2943,331],{"class":251},[226,2945,406],{"class":342},[226,2947,2948],{"class":251}," },",[226,2950,2951],{"class":290}," coupon",[226,2953,331],{"class":251},[226,2955,354],{"class":251},[226,2957,2958],{"class":357},"SAVE10",[226,2960,361],{"class":251},[226,2962,364],{"class":251},[226,2964,295],{"class":243},[226,2966,2967],{"class":228,"line":474},[226,2968,302],{"emptyLinePlaceholder":301},[226,2970,2971],{"class":228,"line":479},[226,2972,2973],{"class":271},"// Outcome\n",[226,2975,2976,2978,2980,2982,2984,2986,2988,2990,2993,2995,2998,3000,3003,3005],{"class":228,"line":485},[226,2977,192],{"class":243},[226,2979,317],{"class":251},[226,2981,320],{"class":239},[226,2983,244],{"class":243},[226,2985,325],{"class":251},[226,2987,2521],{"class":290},[226,2989,331],{"class":251},[226,2991,2992],{"class":342}," 200",[226,2994,346],{"class":251},[226,2996,2997],{"class":290}," duration",[226,2999,331],{"class":251},[226,3001,3002],{"class":342}," 234",[226,3004,364],{"class":251},[226,3006,295],{"class":243},[216,3008,3011],{"className":1599,"code":3009,"filename":3010,"language":1602,"meta":222,"style":222},"{\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)",[186,3012,3013,3017,3036,3054,3072,3087,3106,3144,3163,3177,3191],{"__ignoreMap":222},[226,3014,3015],{"class":228,"line":229},[226,3016,700],{"class":251},[226,3018,3019,3021,3024,3026,3028,3030,3032,3034],{"class":228,"line":268},[226,3020,1613],{"class":251},[226,3022,3023],{"class":247},"level",[226,3025,1619],{"class":251},[226,3027,331],{"class":251},[226,3029,1639],{"class":251},[226,3031,178],{"class":357},[226,3033,1619],{"class":251},[226,3035,723],{"class":251},[226,3037,3038,3040,3042,3044,3046,3048,3050,3052],{"class":228,"line":275},[226,3039,1613],{"class":251},[226,3041,1363],{"class":247},[226,3043,1619],{"class":251},[226,3045,331],{"class":251},[226,3047,1639],{"class":251},[226,3049,1422],{"class":357},[226,3051,1619],{"class":251},[226,3053,723],{"class":251},[226,3055,3056,3058,3060,3062,3064,3066,3068,3070],{"class":228,"line":298},[226,3057,1613],{"class":251},[226,3059,1366],{"class":247},[226,3061,1619],{"class":251},[226,3063,331],{"class":251},[226,3065,1639],{"class":251},[226,3067,1436],{"class":357},[226,3069,1619],{"class":251},[226,3071,723],{"class":251},[226,3073,3074,3076,3079,3081,3083,3085],{"class":228,"line":305},[226,3075,1613],{"class":251},[226,3077,3078],{"class":247},"userId",[226,3080,1619],{"class":251},[226,3082,331],{"class":251},[226,3084,343],{"class":342},[226,3086,723],{"class":251},[226,3088,3089,3091,3094,3096,3098,3100,3102,3104],{"class":228,"line":311},[226,3090,1613],{"class":251},[226,3092,3093],{"class":247},"subscription",[226,3095,1619],{"class":251},[226,3097,331],{"class":251},[226,3099,1639],{"class":251},[226,3101,358],{"class":357},[226,3103,1619],{"class":251},[226,3105,723],{"class":251},[226,3107,3108,3110,3112,3114,3116,3118,3120,3123,3125,3127,3129,3131,3133,3136,3138,3140,3142],{"class":228,"line":371},[226,3109,1613],{"class":251},[226,3111,1873],{"class":247},[226,3113,1619],{"class":251},[226,3115,331],{"class":251},[226,3117,334],{"class":251},[226,3119,1639],{"class":251},[226,3121,3122],{"class":535},"items",[226,3124,1619],{"class":251},[226,3126,331],{"class":251},[226,3128,396],{"class":342},[226,3130,346],{"class":251},[226,3132,1639],{"class":251},[226,3134,3135],{"class":535},"total",[226,3137,1619],{"class":251},[226,3139,331],{"class":251},[226,3141,406],{"class":342},[226,3143,807],{"class":251},[226,3145,3146,3148,3151,3153,3155,3157,3159,3161],{"class":228,"line":415},[226,3147,1613],{"class":251},[226,3149,3150],{"class":247},"coupon",[226,3152,1619],{"class":251},[226,3154,331],{"class":251},[226,3156,1639],{"class":251},[226,3158,2958],{"class":357},[226,3160,1619],{"class":251},[226,3162,723],{"class":251},[226,3164,3165,3167,3169,3171,3173,3175],{"class":228,"line":420},[226,3166,1613],{"class":251},[226,3168,1765],{"class":247},[226,3170,1619],{"class":251},[226,3172,331],{"class":251},[226,3174,2992],{"class":342},[226,3176,723],{"class":251},[226,3178,3179,3181,3184,3186,3188],{"class":228,"line":426},[226,3180,1613],{"class":251},[226,3182,3183],{"class":247},"duration",[226,3185,1619],{"class":251},[226,3187,331],{"class":251},[226,3189,3190],{"class":342}," 234\n",[226,3192,3193],{"class":228,"line":445},[226,3194,1725],{"class":251},[201,3196,3198],{"id":3197},"next-steps","Next Steps",[3200,3201,3202,3209,3214,3219],"ul",{},[3203,3204,3205,3208],"li",{},[3206,3207,36],"a",{"href":37}," - Learn how to design effective wide events",[3203,3210,3211,3213],{},[3206,3212,51],{"href":52}," - Add compile-time type safety to your wide events",[3203,3215,3216,3218],{},[3206,3217,41],{"href":42}," - Master error handling with evlog",[3203,3220,3221,3223],{},[3206,3222,46],{"href":47}," - Security guidelines and production tips",[3225,3226,3227],"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":222,"searchDepth":268,"depth":268,"links":3229},[3230,3234,3235,3239,3240,3241,3242],{"id":203,"depth":268,"text":204,"children":3231},[3232,3233],{"id":602,"depth":275,"text":603},{"id":666,"depth":275,"text":667},{"id":1062,"depth":268,"text":1063},{"id":1460,"depth":268,"text":1461,"children":3236},[3237,3238],{"id":1728,"depth":275,"text":1729},{"id":1819,"depth":275,"text":1820},{"id":2197,"depth":268,"text":2198},{"id":2366,"depth":268,"text":2367},{"id":2784,"depth":268,"text":2785},{"id":3197,"depth":268,"text":3198},"Get up and running with evlog in minutes. Learn useLogger, createError, parseError, and the log API for wide events and structured errors.","md",[3246,3249],{"label":36,"icon":39,"to":37,"color":3247,"variant":3248},"neutral","subtle",{"label":41,"icon":44,"to":42,"color":3247,"variant":3248},{},{"icon":23},{"title":20,"description":3243},"FF-l-2egBXVRionhay25VzTyrElaNyafYr1hRJ-4ELM",[3255,3257],{"title":15,"path":16,"stem":17,"description":3256,"icon":18,"children":-1},"Install evlog in your Nuxt, Next.js, Nitro, Cloudflare Workers, or standalone TypeScript project. Configure sampling, log draining, and client transport.",{"title":25,"path":26,"stem":27,"description":3258,"icon":28,"children":-1},"AI-assisted code review and evlog adoption using Agent Skills. Let AI review your logging patterns and guide migration to wide events.",1772878747655]