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