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