[{"data":1,"prerenderedAt":3586},["ShallowReactive",2],{"navigation_docs":3,"-frameworks-nuxt":297,"-frameworks-nuxt-surround":3581},[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":125,"body":299,"description":3574,"extension":3575,"links":3576,"meta":3577,"navigation":3578,"path":126,"seo":3579,"stem":127,"__hash__":3580},"docs\u002F4.frameworks\u002F01.nuxt.md",{"type":300,"value":301,"toc":3546},"minimark",[302,319,406,410,415,481,485,594,604,607,614,963,966,1044,1048,1063,1321,1337,1340,1362,1372,1646,1650,1659,1791,1805,1809,1812,1979,1983,1986,1990,2228,2232,2439,2448,2450,2454,2457,2584,2587,2591,2594,2738,2742,2749,2902,2909,2913,2916,3009,3013,3043,3047,3053,3158,3162,3165,3298,3302,3309,3502,3506,3512,3542],[303,304,305,306,310,311,314,315,318],"p",{},"evlog provides a first-class Nuxt module with auto-imported ",[307,308,309],"code",{},"useLogger",", ",[307,312,313],{},"createError",", and ",[307,316,317],{},"parseError",". Add it to your config and start logging with zero boilerplate.",[320,321,322],"code-collapse",{},[323,324,330],"pre",{"className":325,"code":326,"filename":327,"language":328,"meta":329,"style":329},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Set up evlog in my Nuxt app with wide events and structured errors.\n\n- Install evlog: pnpm add evlog\n- Add 'evlog\u002Fnuxt' to modules in nuxt.config.ts\n- Set evlog.env.service to my app name\n- useLogger, createError, and parseError are auto-imported\n- Create a server\u002Fapi route using useLogger(event) and log.set() to build a wide event\n- Throw errors with createError({ message, status, why, fix })\n- Wide events are auto-emitted when each request completes\n\nDocs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fnuxt\nAdapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n","Prompt","txt","",[307,331,332,340,347,353,359,365,371,377,383,389,394,400],{"__ignoreMap":329},[333,334,337],"span",{"class":335,"line":336},"line",1,[333,338,339],{},"Set up evlog in my Nuxt app with wide events and structured errors.\n",[333,341,343],{"class":335,"line":342},2,[333,344,346],{"emptyLinePlaceholder":345},true,"\n",[333,348,350],{"class":335,"line":349},3,[333,351,352],{},"- Install evlog: pnpm add evlog\n",[333,354,356],{"class":335,"line":355},4,[333,357,358],{},"- Add 'evlog\u002Fnuxt' to modules in nuxt.config.ts\n",[333,360,362],{"class":335,"line":361},5,[333,363,364],{},"- Set evlog.env.service to my app name\n",[333,366,368],{"class":335,"line":367},6,[333,369,370],{},"- useLogger, createError, and parseError are auto-imported\n",[333,372,374],{"class":335,"line":373},7,[333,375,376],{},"- Create a server\u002Fapi route using useLogger(event) and log.set() to build a wide event\n",[333,378,380],{"class":335,"line":379},8,[333,381,382],{},"- Throw errors with createError({ message, status, why, fix })\n",[333,384,386],{"class":335,"line":385},9,[333,387,388],{},"- Wide events are auto-emitted when each request completes\n",[333,390,392],{"class":335,"line":391},10,[333,393,346],{"emptyLinePlaceholder":345},[333,395,397],{"class":335,"line":396},11,[333,398,399],{},"Docs: https:\u002F\u002Fwww.evlog.dev\u002Fframeworks\u002Fnuxt\n",[333,401,403],{"class":335,"line":402},12,[333,404,405],{},"Adapters: https:\u002F\u002Fwww.evlog.dev\u002Fadapters\n",[407,408,20],"h2",{"id":409},"quick-start",[411,412,414],"h3",{"id":413},"_1-install","1. Install",[416,417,418,438,453,467],"code-group",{},[323,419,424],{"className":420,"code":421,"filename":422,"language":423,"meta":329,"style":329},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm add evlog\n","pnpm","bash",[307,425,426],{"__ignoreMap":329},[333,427,428,431,435],{"class":335,"line":336},[333,429,422],{"class":430},"sBMFI",[333,432,434],{"class":433},"sfazB"," add",[333,436,437],{"class":433}," evlog\n",[323,439,442],{"className":420,"code":440,"filename":441,"language":423,"meta":329,"style":329},"npm install evlog\n","npm",[307,443,444],{"__ignoreMap":329},[333,445,446,448,451],{"class":335,"line":336},[333,447,441],{"class":430},[333,449,450],{"class":433}," install",[333,452,437],{"class":433},[323,454,457],{"className":420,"code":455,"filename":456,"language":423,"meta":329,"style":329},"yarn add evlog\n","yarn",[307,458,459],{"__ignoreMap":329},[333,460,461,463,465],{"class":335,"line":336},[333,462,456],{"class":430},[333,464,434],{"class":433},[333,466,437],{"class":433},[323,468,471],{"className":420,"code":469,"filename":470,"language":423,"meta":329,"style":329},"bun add evlog\n","bun",[307,472,473],{"__ignoreMap":329},[333,474,475,477,479],{"class":335,"line":336},[333,476,470],{"class":430},[333,478,434],{"class":433},[333,480,437],{"class":433},[411,482,484],{"id":483},"_2-add-the-module","2. Add the module",[323,486,491],{"className":487,"code":488,"filename":489,"language":490,"meta":329,"style":329},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: {\n      service: 'my-app',\n    },\n  },\n})\n","nuxt.config.ts","typescript",[307,492,493,514,540,550,559,576,581,586],{"__ignoreMap":329},[333,494,495,499,502,506,510],{"class":335,"line":336},[333,496,498],{"class":497},"s7zQu","export",[333,500,501],{"class":497}," default",[333,503,505],{"class":504},"s2Zo4"," defineNuxtConfig",[333,507,509],{"class":508},"sTEyZ","(",[333,511,513],{"class":512},"sMK4o","{\n",[333,515,516,520,523,526,529,532,534,537],{"class":335,"line":342},[333,517,519],{"class":518},"swJcz","  modules",[333,521,522],{"class":512},":",[333,524,525],{"class":508}," [",[333,527,528],{"class":512},"'",[333,530,531],{"class":433},"evlog\u002Fnuxt",[333,533,528],{"class":512},[333,535,536],{"class":508},"]",[333,538,539],{"class":512},",\n",[333,541,542,545,547],{"class":335,"line":349},[333,543,544],{"class":518},"  evlog",[333,546,522],{"class":512},[333,548,549],{"class":512}," {\n",[333,551,552,555,557],{"class":335,"line":355},[333,553,554],{"class":518},"    env",[333,556,522],{"class":512},[333,558,549],{"class":512},[333,560,561,564,566,569,572,574],{"class":335,"line":361},[333,562,563],{"class":518},"      service",[333,565,522],{"class":512},[333,567,568],{"class":512}," '",[333,570,571],{"class":433},"my-app",[333,573,528],{"class":512},[333,575,539],{"class":512},[333,577,578],{"class":335,"line":367},[333,579,580],{"class":512},"    },\n",[333,582,583],{"class":335,"line":373},[333,584,585],{"class":512},"  },\n",[333,587,588,591],{"class":335,"line":379},[333,589,590],{"class":512},"}",[333,592,593],{"class":508},")\n",[303,595,596,597,310,599,314,601,603],{},"That's it. ",[307,598,309],{},[307,600,313],{},[307,602,317],{}," are auto-imported.",[407,605,46],{"id":606},"wide-events",[303,608,609,610,613],{},"Build up context progressively throughout a request with ",[307,611,612],{},"useLogger(event)",". evlog emits a single wide event when the request completes.",[323,615,618],{"className":487,"code":616,"filename":617,"language":490,"meta":329,"style":329},"export default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\n\n  log.set({ user: { id: body.userId, plan: 'enterprise' } })\n\n  const cart = await db.findCart(body.cartId)\n  log.set({ cart: { items: cart.items.length, total: cart.total } })\n\n  const payment = await processPayment(cart)\n  log.set({ payment: { method: payment.method, cardLast4: payment.last4 } })\n\n  return { success: true, orderId: payment.orderId }\n})\n","server\u002Fapi\u002Fcheckout.post.ts",[307,619,620,650,670,691,695,753,757,788,843,847,868,918,922,956],{"__ignoreMap":329},[333,621,622,624,626,629,631,635,638,642,645,648],{"class":335,"line":336},[333,623,498],{"class":497},[333,625,501],{"class":497},[333,627,628],{"class":504}," defineEventHandler",[333,630,509],{"class":508},[333,632,634],{"class":633},"spNyl","async",[333,636,637],{"class":512}," (",[333,639,641],{"class":640},"sHdIc","event",[333,643,644],{"class":512},")",[333,646,647],{"class":633}," =>",[333,649,549],{"class":512},[333,651,652,655,658,661,664,666,668],{"class":335,"line":342},[333,653,654],{"class":633},"  const",[333,656,657],{"class":508}," log",[333,659,660],{"class":512}," =",[333,662,663],{"class":504}," useLogger",[333,665,509],{"class":518},[333,667,641],{"class":508},[333,669,593],{"class":518},[333,671,672,674,677,679,682,685,687,689],{"class":335,"line":349},[333,673,654],{"class":633},[333,675,676],{"class":508}," body",[333,678,660],{"class":512},[333,680,681],{"class":497}," await",[333,683,684],{"class":504}," readBody",[333,686,509],{"class":518},[333,688,641],{"class":508},[333,690,593],{"class":518},[333,692,693],{"class":335,"line":355},[333,694,346],{"emptyLinePlaceholder":345},[333,696,697,700,703,706,708,711,714,716,719,722,724,726,728,731,734,737,739,741,744,746,749,751],{"class":335,"line":361},[333,698,699],{"class":508},"  log",[333,701,702],{"class":512},".",[333,704,705],{"class":504},"set",[333,707,509],{"class":518},[333,709,710],{"class":512},"{",[333,712,713],{"class":518}," user",[333,715,522],{"class":512},[333,717,718],{"class":512}," {",[333,720,721],{"class":518}," id",[333,723,522],{"class":512},[333,725,676],{"class":508},[333,727,702],{"class":512},[333,729,730],{"class":508},"userId",[333,732,733],{"class":512},",",[333,735,736],{"class":518}," plan",[333,738,522],{"class":512},[333,740,568],{"class":512},[333,742,743],{"class":433},"enterprise",[333,745,528],{"class":512},[333,747,748],{"class":512}," }",[333,750,748],{"class":512},[333,752,593],{"class":518},[333,754,755],{"class":335,"line":367},[333,756,346],{"emptyLinePlaceholder":345},[333,758,759,761,764,766,768,771,773,776,778,781,783,786],{"class":335,"line":373},[333,760,654],{"class":633},[333,762,763],{"class":508}," cart",[333,765,660],{"class":512},[333,767,681],{"class":497},[333,769,770],{"class":508}," db",[333,772,702],{"class":512},[333,774,775],{"class":504},"findCart",[333,777,509],{"class":518},[333,779,780],{"class":508},"body",[333,782,702],{"class":512},[333,784,785],{"class":508},"cartId",[333,787,593],{"class":518},[333,789,790,792,794,796,798,800,802,804,806,809,811,813,815,818,820,823,825,828,830,832,834,837,839,841],{"class":335,"line":379},[333,791,699],{"class":508},[333,793,702],{"class":512},[333,795,705],{"class":504},[333,797,509],{"class":518},[333,799,710],{"class":512},[333,801,763],{"class":518},[333,803,522],{"class":512},[333,805,718],{"class":512},[333,807,808],{"class":518}," items",[333,810,522],{"class":512},[333,812,763],{"class":508},[333,814,702],{"class":512},[333,816,817],{"class":508},"items",[333,819,702],{"class":512},[333,821,822],{"class":508},"length",[333,824,733],{"class":512},[333,826,827],{"class":518}," total",[333,829,522],{"class":512},[333,831,763],{"class":508},[333,833,702],{"class":512},[333,835,836],{"class":508},"total",[333,838,748],{"class":512},[333,840,748],{"class":512},[333,842,593],{"class":518},[333,844,845],{"class":335,"line":385},[333,846,346],{"emptyLinePlaceholder":345},[333,848,849,851,854,856,858,861,863,866],{"class":335,"line":391},[333,850,654],{"class":633},[333,852,853],{"class":508}," payment",[333,855,660],{"class":512},[333,857,681],{"class":497},[333,859,860],{"class":504}," processPayment",[333,862,509],{"class":518},[333,864,865],{"class":508},"cart",[333,867,593],{"class":518},[333,869,870,872,874,876,878,880,882,884,886,889,891,893,895,898,900,903,905,907,909,912,914,916],{"class":335,"line":396},[333,871,699],{"class":508},[333,873,702],{"class":512},[333,875,705],{"class":504},[333,877,509],{"class":518},[333,879,710],{"class":512},[333,881,853],{"class":518},[333,883,522],{"class":512},[333,885,718],{"class":512},[333,887,888],{"class":518}," method",[333,890,522],{"class":512},[333,892,853],{"class":508},[333,894,702],{"class":512},[333,896,897],{"class":508},"method",[333,899,733],{"class":512},[333,901,902],{"class":518}," cardLast4",[333,904,522],{"class":512},[333,906,853],{"class":508},[333,908,702],{"class":512},[333,910,911],{"class":508},"last4",[333,913,748],{"class":512},[333,915,748],{"class":512},[333,917,593],{"class":518},[333,919,920],{"class":335,"line":402},[333,921,346],{"emptyLinePlaceholder":345},[333,923,925,928,930,933,935,939,941,944,946,948,950,953],{"class":335,"line":924},13,[333,926,927],{"class":497},"  return",[333,929,718],{"class":512},[333,931,932],{"class":518}," success",[333,934,522],{"class":512},[333,936,938],{"class":937},"sfNiH"," true",[333,940,733],{"class":512},[333,942,943],{"class":518}," orderId",[333,945,522],{"class":512},[333,947,853],{"class":508},[333,949,702],{"class":512},[333,951,952],{"class":508},"orderId",[333,954,955],{"class":512}," }\n",[333,957,959,961],{"class":335,"line":958},14,[333,960,590],{"class":512},[333,962,593],{"class":508},[303,964,965],{},"One request, one log line with all context:",[323,967,970],{"className":420,"code":968,"filename":969,"language":423,"meta":329,"style":329},"10:23:45 INFO [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n  ├─ user: id=usr_123 plan=enterprise\n  ├─ cart: items=3 total=14999\n  ├─ payment: method=card cardLast4=4242\n  └─ requestId: a1b2c3d4-...\n","Terminal output",[307,971,972,983,997,1017,1033],{"__ignoreMap":329},[333,973,974,977,980],{"class":335,"line":336},[333,975,976],{"class":430},"10:23:45",[333,978,979],{"class":433}," INFO",[333,981,982],{"class":508}," [my-app] POST \u002Fapi\u002Fcheckout 200 in 145ms\n",[333,984,985,988,991,994],{"class":335,"line":342},[333,986,987],{"class":430},"  ├─",[333,989,990],{"class":433}," user:",[333,992,993],{"class":433}," id=usr_123",[333,995,996],{"class":433}," plan=enterprise\n",[333,998,999,1001,1004,1007,1011,1014],{"class":335,"line":349},[333,1000,987],{"class":430},[333,1002,1003],{"class":433}," cart:",[333,1005,1006],{"class":433}," items=",[333,1008,1010],{"class":1009},"sbssI","3",[333,1012,1013],{"class":433}," total=",[333,1015,1016],{"class":1009},"14999\n",[333,1018,1019,1021,1024,1027,1030],{"class":335,"line":355},[333,1020,987],{"class":430},[333,1022,1023],{"class":433}," payment:",[333,1025,1026],{"class":433}," method=card",[333,1028,1029],{"class":433}," cardLast4=",[333,1031,1032],{"class":1009},"4242\n",[333,1034,1035,1038,1041],{"class":335,"line":361},[333,1036,1037],{"class":430},"  └─",[333,1039,1040],{"class":433}," requestId:",[333,1042,1043],{"class":433}," a1b2c3d4-...\n",[407,1045,1047],{"id":1046},"error-handling","Error Handling",[303,1049,1050,1052,1053,310,1056,314,1059,1062],{},[307,1051,313],{}," produces structured errors with ",[307,1054,1055],{},"why",[307,1057,1058],{},"fix",[307,1060,1061],{},"link"," fields that help both humans and AI agents understand what went wrong.",[323,1064,1067],{"className":487,"code":1065,"filename":1066,"language":490,"meta":329,"style":329},"export default defineEventHandler(async (event) => {\n  const log = useLogger(event)\n  const body = await readBody(event)\n\n  log.set({ payment: { amount: body.amount } })\n\n  if (body.amount \u003C= 0) {\n    throw createError({\n      status: 400,\n      message: 'Invalid payment amount',\n      why: 'The amount must be a positive number',\n      fix: 'Pass a positive integer in cents (e.g. 4999 for $49.99)',\n      link: 'https:\u002F\u002Fdocs.example.com\u002Fapi\u002Fpayments#amount',\n    })\n  }\n\n  return { success: true }\n})\n","server\u002Fapi\u002Fpayment\u002Fprocess.post.ts",[307,1068,1069,1091,1107,1125,1129,1165,1169,1193,1205,1217,1233,1249,1265,1281,1288,1294,1299,1314],{"__ignoreMap":329},[333,1070,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089],{"class":335,"line":336},[333,1072,498],{"class":497},[333,1074,501],{"class":497},[333,1076,628],{"class":504},[333,1078,509],{"class":508},[333,1080,634],{"class":633},[333,1082,637],{"class":512},[333,1084,641],{"class":640},[333,1086,644],{"class":512},[333,1088,647],{"class":633},[333,1090,549],{"class":512},[333,1092,1093,1095,1097,1099,1101,1103,1105],{"class":335,"line":342},[333,1094,654],{"class":633},[333,1096,657],{"class":508},[333,1098,660],{"class":512},[333,1100,663],{"class":504},[333,1102,509],{"class":518},[333,1104,641],{"class":508},[333,1106,593],{"class":518},[333,1108,1109,1111,1113,1115,1117,1119,1121,1123],{"class":335,"line":349},[333,1110,654],{"class":633},[333,1112,676],{"class":508},[333,1114,660],{"class":512},[333,1116,681],{"class":497},[333,1118,684],{"class":504},[333,1120,509],{"class":518},[333,1122,641],{"class":508},[333,1124,593],{"class":518},[333,1126,1127],{"class":335,"line":355},[333,1128,346],{"emptyLinePlaceholder":345},[333,1130,1131,1133,1135,1137,1139,1141,1143,1145,1147,1150,1152,1154,1156,1159,1161,1163],{"class":335,"line":361},[333,1132,699],{"class":508},[333,1134,702],{"class":512},[333,1136,705],{"class":504},[333,1138,509],{"class":518},[333,1140,710],{"class":512},[333,1142,853],{"class":518},[333,1144,522],{"class":512},[333,1146,718],{"class":512},[333,1148,1149],{"class":518}," amount",[333,1151,522],{"class":512},[333,1153,676],{"class":508},[333,1155,702],{"class":512},[333,1157,1158],{"class":508},"amount",[333,1160,748],{"class":512},[333,1162,748],{"class":512},[333,1164,593],{"class":518},[333,1166,1167],{"class":335,"line":367},[333,1168,346],{"emptyLinePlaceholder":345},[333,1170,1171,1174,1176,1178,1180,1182,1185,1188,1191],{"class":335,"line":373},[333,1172,1173],{"class":497},"  if",[333,1175,637],{"class":518},[333,1177,780],{"class":508},[333,1179,702],{"class":512},[333,1181,1158],{"class":508},[333,1183,1184],{"class":512}," \u003C=",[333,1186,1187],{"class":1009}," 0",[333,1189,1190],{"class":518},") ",[333,1192,513],{"class":512},[333,1194,1195,1198,1201,1203],{"class":335,"line":379},[333,1196,1197],{"class":497},"    throw",[333,1199,1200],{"class":504}," createError",[333,1202,509],{"class":518},[333,1204,513],{"class":512},[333,1206,1207,1210,1212,1215],{"class":335,"line":385},[333,1208,1209],{"class":518},"      status",[333,1211,522],{"class":512},[333,1213,1214],{"class":1009}," 400",[333,1216,539],{"class":512},[333,1218,1219,1222,1224,1226,1229,1231],{"class":335,"line":391},[333,1220,1221],{"class":518},"      message",[333,1223,522],{"class":512},[333,1225,568],{"class":512},[333,1227,1228],{"class":433},"Invalid payment amount",[333,1230,528],{"class":512},[333,1232,539],{"class":512},[333,1234,1235,1238,1240,1242,1245,1247],{"class":335,"line":396},[333,1236,1237],{"class":518},"      why",[333,1239,522],{"class":512},[333,1241,568],{"class":512},[333,1243,1244],{"class":433},"The amount must be a positive number",[333,1246,528],{"class":512},[333,1248,539],{"class":512},[333,1250,1251,1254,1256,1258,1261,1263],{"class":335,"line":402},[333,1252,1253],{"class":518},"      fix",[333,1255,522],{"class":512},[333,1257,568],{"class":512},[333,1259,1260],{"class":433},"Pass a positive integer in cents (e.g. 4999 for $49.99)",[333,1262,528],{"class":512},[333,1264,539],{"class":512},[333,1266,1267,1270,1272,1274,1277,1279],{"class":335,"line":924},[333,1268,1269],{"class":518},"      link",[333,1271,522],{"class":512},[333,1273,568],{"class":512},[333,1275,1276],{"class":433},"https:\u002F\u002Fdocs.example.com\u002Fapi\u002Fpayments#amount",[333,1278,528],{"class":512},[333,1280,539],{"class":512},[333,1282,1283,1286],{"class":335,"line":958},[333,1284,1285],{"class":512},"    }",[333,1287,593],{"class":518},[333,1289,1291],{"class":335,"line":1290},15,[333,1292,1293],{"class":512},"  }\n",[333,1295,1297],{"class":335,"line":1296},16,[333,1298,346],{"emptyLinePlaceholder":345},[333,1300,1302,1304,1306,1308,1310,1312],{"class":335,"line":1301},17,[333,1303,927],{"class":497},[333,1305,718],{"class":512},[333,1307,932],{"class":518},[333,1309,522],{"class":512},[333,1311,938],{"class":937},[333,1313,955],{"class":512},[333,1315,1317,1319],{"class":335,"line":1316},18,[333,1318,590],{"class":512},[333,1320,593],{"class":508},[1322,1323,1325,1326,1329,1330,310,1332,314,1334,1336],"callout",{"color":1324,"icon":13},"info","Nuxt's error handler automatically catches ",[307,1327,1328],{},"EvlogError"," and returns a structured JSON response with ",[307,1331,1055],{},[307,1333,1058],{},[307,1335,1061],{}," fields.",[407,1338,81],{"id":1339},"configuration",[1322,1341,1343,1344,1348,1349,310,1352,310,1355,310,1358,1361],{"color":1324,"icon":1342},"i-lucide-book-open","See the ",[1345,1346,1347],"a",{"href":82},"Configuration reference"," for the full list of shared options (",[307,1350,1351],{},"enabled",[307,1353,1354],{},"pretty",[307,1356,1357],{},"silent",[307,1359,1360],{},"sampling",", middleware options, etc.).",[303,1363,1364,1365,1367,1368,1371],{},"All options are set in ",[307,1366,489],{}," under the ",[307,1369,1370],{},"evlog"," key:",[1373,1374,1375,1394],"table",{},[1376,1377,1378],"thead",{},[1379,1380,1381,1385,1388,1391],"tr",{},[1382,1383,1384],"th",{},"Option",[1382,1386,1387],{},"Type",[1382,1389,1390],{},"Default",[1382,1392,1393],{},"Description",[1395,1396,1397,1421,1439,1459,1476,1499,1517,1536,1554,1571,1590,1609,1627],"tbody",{},[1379,1398,1399,1404,1409,1414],{},[1400,1401,1402],"td",{},[307,1403,1351],{},[1400,1405,1406],{},[307,1407,1408],{},"boolean",[1400,1410,1411],{},[307,1412,1413],{},"true",[1400,1415,1416,1417,1420],{},"Globally enable\u002Fdisable all logging. When ",[307,1418,1419],{},"false",", all operations become no-ops",[1379,1422,1423,1428,1432,1436],{},[1400,1424,1425],{},[307,1426,1427],{},"console",[1400,1429,1430],{},[307,1431,1408],{},[1400,1433,1434],{},[307,1435,1413],{},[1400,1437,1438],{},"Enable\u002Fdisable browser console output",[1379,1440,1441,1446,1451,1456],{},[1400,1442,1443],{},[307,1444,1445],{},"env.service",[1400,1447,1448],{},[307,1449,1450],{},"string",[1400,1452,1453],{},[307,1454,1455],{},"'app'",[1400,1457,1458],{},"Service name shown in logs",[1379,1460,1461,1466,1470,1473],{},[1400,1462,1463],{},[307,1464,1465],{},"env.environment",[1400,1467,1468],{},[307,1469,1450],{},[1400,1471,1472],{},"Auto-detected",[1400,1474,1475],{},"Environment name",[1379,1477,1478,1483,1488,1493],{},[1400,1479,1480],{},[307,1481,1482],{},"include",[1400,1484,1485],{},[307,1486,1487],{},"string[]",[1400,1489,1490],{},[307,1491,1492],{},"undefined",[1400,1494,1495,1496,644],{},"Route patterns to log. Supports glob (",[307,1497,1498],{},"\u002Fapi\u002F**",[1379,1500,1501,1506,1510,1514],{},[1400,1502,1503],{},[307,1504,1505],{},"exclude",[1400,1507,1508],{},[307,1509,1487],{},[1400,1511,1512],{},[307,1513,1492],{},[1400,1515,1516],{},"Route patterns to exclude. Exclusions take precedence",[1379,1518,1519,1524,1529,1533],{},[1400,1520,1521],{},[307,1522,1523],{},"routes",[1400,1525,1526],{},[307,1527,1528],{},"Record\u003Cstring, RouteConfig>",[1400,1530,1531],{},[307,1532,1492],{},[1400,1534,1535],{},"Route-specific service configuration",[1379,1537,1538,1542,1546,1551],{},[1400,1539,1540],{},[307,1541,1354],{},[1400,1543,1544],{},[307,1545,1408],{},[1400,1547,1548,1550],{},[307,1549,1413],{}," in dev",[1400,1552,1553],{},"Pretty print with tree formatting",[1379,1555,1556,1560,1564,1568],{},[1400,1557,1558],{},[307,1559,1357],{},[1400,1561,1562],{},[307,1563,1408],{},[1400,1565,1566],{},[307,1567,1419],{},[1400,1569,1570],{},"Suppress console output. Events are still built, sampled, and drained. Use for stdout-based platforms",[1379,1572,1573,1578,1583,1587],{},[1400,1574,1575],{},[307,1576,1577],{},"sampling.rates",[1400,1579,1580],{},[307,1581,1582],{},"object",[1400,1584,1585],{},[307,1586,1492],{},[1400,1588,1589],{},"Head sampling rates per log level (0-100%)",[1379,1591,1592,1597,1602,1606],{},[1400,1593,1594],{},[307,1595,1596],{},"sampling.keep",[1400,1598,1599],{},[307,1600,1601],{},"array",[1400,1603,1604],{},[307,1605,1492],{},[1400,1607,1608],{},"Tail sampling conditions to force-keep logs",[1379,1610,1611,1616,1620,1624],{},[1400,1612,1613],{},[307,1614,1615],{},"transport.enabled",[1400,1617,1618],{},[307,1619,1408],{},[1400,1621,1622],{},[307,1623,1419],{},[1400,1625,1626],{},"Enable client-to-server log transport",[1379,1628,1629,1634,1638,1643],{},[1400,1630,1631],{},[307,1632,1633],{},"transport.endpoint",[1400,1635,1636],{},[307,1637,1450],{},[1400,1639,1640],{},[307,1641,1642],{},"'\u002Fapi\u002F_evlog\u002Fingest'",[1400,1644,1645],{},"Transport endpoint",[407,1647,1649],{"id":1648},"route-filtering","Route Filtering",[303,1651,1652,1653,1655,1656,1658],{},"Use ",[307,1654,1482],{}," and ",[307,1657,1505],{}," to control which routes are logged:",[323,1660,1662],{"className":487,"code":1661,"filename":489,"language":490,"meta":329,"style":329},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    include: ['\u002Fapi\u002F**', '\u002Fauth\u002F**'],\n    exclude: [\n      '\u002Fapi\u002F_nuxt_icon\u002F**',\n      '\u002Fapi\u002F_content\u002F**',\n      '\u002Fapi\u002Fhealth',\n    ],\n  },\n})\n",[307,1663,1664,1676,1694,1702,1730,1740,1752,1763,1774,1781,1785],{"__ignoreMap":329},[333,1665,1666,1668,1670,1672,1674],{"class":335,"line":336},[333,1667,498],{"class":497},[333,1669,501],{"class":497},[333,1671,505],{"class":504},[333,1673,509],{"class":508},[333,1675,513],{"class":512},[333,1677,1678,1680,1682,1684,1686,1688,1690,1692],{"class":335,"line":342},[333,1679,519],{"class":518},[333,1681,522],{"class":512},[333,1683,525],{"class":508},[333,1685,528],{"class":512},[333,1687,531],{"class":433},[333,1689,528],{"class":512},[333,1691,536],{"class":508},[333,1693,539],{"class":512},[333,1695,1696,1698,1700],{"class":335,"line":349},[333,1697,544],{"class":518},[333,1699,522],{"class":512},[333,1701,549],{"class":512},[333,1703,1704,1707,1709,1711,1713,1715,1717,1719,1721,1724,1726,1728],{"class":335,"line":355},[333,1705,1706],{"class":518},"    include",[333,1708,522],{"class":512},[333,1710,525],{"class":508},[333,1712,528],{"class":512},[333,1714,1498],{"class":433},[333,1716,528],{"class":512},[333,1718,733],{"class":512},[333,1720,568],{"class":512},[333,1722,1723],{"class":433},"\u002Fauth\u002F**",[333,1725,528],{"class":512},[333,1727,536],{"class":508},[333,1729,539],{"class":512},[333,1731,1732,1735,1737],{"class":335,"line":361},[333,1733,1734],{"class":518},"    exclude",[333,1736,522],{"class":512},[333,1738,1739],{"class":508}," [\n",[333,1741,1742,1745,1748,1750],{"class":335,"line":367},[333,1743,1744],{"class":512},"      '",[333,1746,1747],{"class":433},"\u002Fapi\u002F_nuxt_icon\u002F**",[333,1749,528],{"class":512},[333,1751,539],{"class":512},[333,1753,1754,1756,1759,1761],{"class":335,"line":373},[333,1755,1744],{"class":512},[333,1757,1758],{"class":433},"\u002Fapi\u002F_content\u002F**",[333,1760,528],{"class":512},[333,1762,539],{"class":512},[333,1764,1765,1767,1770,1772],{"class":335,"line":379},[333,1766,1744],{"class":512},[333,1768,1769],{"class":433},"\u002Fapi\u002Fhealth",[333,1771,528],{"class":512},[333,1773,539],{"class":512},[333,1775,1776,1779],{"class":335,"line":385},[333,1777,1778],{"class":508},"    ]",[333,1780,539],{"class":512},[333,1782,1783],{"class":335,"line":391},[333,1784,585],{"class":512},[333,1786,1787,1789],{"class":335,"line":396},[333,1788,590],{"class":512},[333,1790,593],{"class":508},[1322,1792,1795,1799,1800,1655,1802,1804],{"color":1793,"icon":1794},"warning","i-lucide-alert-triangle",[1796,1797,1798],"strong",{},"Exclusions take precedence."," If a path matches both ",[307,1801,1482],{},[307,1803,1505],{},", it will be excluded.",[411,1806,1808],{"id":1807},"route-based-service-names","Route-Based Service Names",[303,1810,1811],{},"Assign different service names to different route groups:",[323,1813,1815],{"className":487,"code":1814,"filename":489,"language":490,"meta":329,"style":329},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'default-service' },\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",[307,1816,1817,1829,1847,1855,1878,1887,1913,1939,1965,1969,1973],{"__ignoreMap":329},[333,1818,1819,1821,1823,1825,1827],{"class":335,"line":336},[333,1820,498],{"class":497},[333,1822,501],{"class":497},[333,1824,505],{"class":504},[333,1826,509],{"class":508},[333,1828,513],{"class":512},[333,1830,1831,1833,1835,1837,1839,1841,1843,1845],{"class":335,"line":342},[333,1832,519],{"class":518},[333,1834,522],{"class":512},[333,1836,525],{"class":508},[333,1838,528],{"class":512},[333,1840,531],{"class":433},[333,1842,528],{"class":512},[333,1844,536],{"class":508},[333,1846,539],{"class":512},[333,1848,1849,1851,1853],{"class":335,"line":349},[333,1850,544],{"class":518},[333,1852,522],{"class":512},[333,1854,549],{"class":512},[333,1856,1857,1859,1861,1863,1866,1868,1870,1873,1875],{"class":335,"line":355},[333,1858,554],{"class":518},[333,1860,522],{"class":512},[333,1862,718],{"class":512},[333,1864,1865],{"class":518}," service",[333,1867,522],{"class":512},[333,1869,568],{"class":512},[333,1871,1872],{"class":433},"default-service",[333,1874,528],{"class":512},[333,1876,1877],{"class":512}," },\n",[333,1879,1880,1883,1885],{"class":335,"line":361},[333,1881,1882],{"class":518},"    routes",[333,1884,522],{"class":512},[333,1886,549],{"class":512},[333,1888,1889,1891,1894,1896,1898,1900,1902,1904,1906,1909,1911],{"class":335,"line":367},[333,1890,1744],{"class":512},[333,1892,1893],{"class":518},"\u002Fapi\u002Fauth\u002F**",[333,1895,528],{"class":512},[333,1897,522],{"class":512},[333,1899,718],{"class":512},[333,1901,1865],{"class":518},[333,1903,522],{"class":512},[333,1905,568],{"class":512},[333,1907,1908],{"class":433},"auth-service",[333,1910,528],{"class":512},[333,1912,1877],{"class":512},[333,1914,1915,1917,1920,1922,1924,1926,1928,1930,1932,1935,1937],{"class":335,"line":373},[333,1916,1744],{"class":512},[333,1918,1919],{"class":518},"\u002Fapi\u002Fpayment\u002F**",[333,1921,528],{"class":512},[333,1923,522],{"class":512},[333,1925,718],{"class":512},[333,1927,1865],{"class":518},[333,1929,522],{"class":512},[333,1931,568],{"class":512},[333,1933,1934],{"class":433},"payment-service",[333,1936,528],{"class":512},[333,1938,1877],{"class":512},[333,1940,1941,1943,1946,1948,1950,1952,1954,1956,1958,1961,1963],{"class":335,"line":379},[333,1942,1744],{"class":512},[333,1944,1945],{"class":518},"\u002Fapi\u002Fbooking\u002F**",[333,1947,528],{"class":512},[333,1949,522],{"class":512},[333,1951,718],{"class":512},[333,1953,1865],{"class":518},[333,1955,522],{"class":512},[333,1957,568],{"class":512},[333,1959,1960],{"class":433},"booking-service",[333,1962,528],{"class":512},[333,1964,1877],{"class":512},[333,1966,1967],{"class":335,"line":385},[333,1968,580],{"class":512},[333,1970,1971],{"class":335,"line":391},[333,1972,585],{"class":512},[333,1974,1975,1977],{"class":335,"line":396},[333,1976,590],{"class":512},[333,1978,593],{"class":508},[407,1980,1982],{"id":1981},"drain-enrichers","Drain & Enrichers",[303,1984,1985],{},"Use Nitro plugin hooks to send logs to external services and enrich them with additional context.",[411,1987,1989],{"id":1988},"drain-plugin","Drain Plugin",[323,1991,1994],{"className":487,"code":1992,"filename":1993,"language":490,"meta":329,"style":329},"import type { DrainContext } from 'evlog'\nimport { createAxiomDrain } from 'evlog\u002Faxiom'\nimport { createDrainPipeline } from 'evlog\u002Fpipeline'\n\nconst pipeline = createDrainPipeline\u003CDrainContext>({\n  batch: { size: 50, intervalMs: 5000 },\n  retry: { maxAttempts: 3 },\n})\nconst drain = pipeline(createAxiomDrain())\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:drain', drain)\n})\n","server\u002Fplugins\u002Fevlog-drain.ts",[307,1995,1996,2021,2041,2061,2065,2091,2120,2139,2145,2165,2169,2191,2222],{"__ignoreMap":329},[333,1997,1998,2001,2004,2006,2009,2011,2014,2016,2018],{"class":335,"line":336},[333,1999,2000],{"class":497},"import",[333,2002,2003],{"class":497}," type",[333,2005,718],{"class":512},[333,2007,2008],{"class":508}," DrainContext",[333,2010,748],{"class":512},[333,2012,2013],{"class":497}," from",[333,2015,568],{"class":512},[333,2017,1370],{"class":433},[333,2019,2020],{"class":512},"'\n",[333,2022,2023,2025,2027,2030,2032,2034,2036,2039],{"class":335,"line":342},[333,2024,2000],{"class":497},[333,2026,718],{"class":512},[333,2028,2029],{"class":508}," createAxiomDrain",[333,2031,748],{"class":512},[333,2033,2013],{"class":497},[333,2035,568],{"class":512},[333,2037,2038],{"class":433},"evlog\u002Faxiom",[333,2040,2020],{"class":512},[333,2042,2043,2045,2047,2050,2052,2054,2056,2059],{"class":335,"line":349},[333,2044,2000],{"class":497},[333,2046,718],{"class":512},[333,2048,2049],{"class":508}," createDrainPipeline",[333,2051,748],{"class":512},[333,2053,2013],{"class":497},[333,2055,568],{"class":512},[333,2057,2058],{"class":433},"evlog\u002Fpipeline",[333,2060,2020],{"class":512},[333,2062,2063],{"class":335,"line":355},[333,2064,346],{"emptyLinePlaceholder":345},[333,2066,2067,2070,2073,2076,2078,2081,2084,2087,2089],{"class":335,"line":361},[333,2068,2069],{"class":633},"const",[333,2071,2072],{"class":508}," pipeline ",[333,2074,2075],{"class":512},"=",[333,2077,2049],{"class":504},[333,2079,2080],{"class":512},"\u003C",[333,2082,2083],{"class":430},"DrainContext",[333,2085,2086],{"class":512},">",[333,2088,509],{"class":508},[333,2090,513],{"class":512},[333,2092,2093,2096,2098,2100,2103,2105,2108,2110,2113,2115,2118],{"class":335,"line":367},[333,2094,2095],{"class":518},"  batch",[333,2097,522],{"class":512},[333,2099,718],{"class":512},[333,2101,2102],{"class":518}," size",[333,2104,522],{"class":512},[333,2106,2107],{"class":1009}," 50",[333,2109,733],{"class":512},[333,2111,2112],{"class":518}," intervalMs",[333,2114,522],{"class":512},[333,2116,2117],{"class":1009}," 5000",[333,2119,1877],{"class":512},[333,2121,2122,2125,2127,2129,2132,2134,2137],{"class":335,"line":373},[333,2123,2124],{"class":518},"  retry",[333,2126,522],{"class":512},[333,2128,718],{"class":512},[333,2130,2131],{"class":518}," maxAttempts",[333,2133,522],{"class":512},[333,2135,2136],{"class":1009}," 3",[333,2138,1877],{"class":512},[333,2140,2141,2143],{"class":335,"line":379},[333,2142,590],{"class":512},[333,2144,593],{"class":508},[333,2146,2147,2149,2152,2154,2157,2159,2162],{"class":335,"line":385},[333,2148,2069],{"class":633},[333,2150,2151],{"class":508}," drain ",[333,2153,2075],{"class":512},[333,2155,2156],{"class":504}," pipeline",[333,2158,509],{"class":508},[333,2160,2161],{"class":504},"createAxiomDrain",[333,2163,2164],{"class":508},"())\n",[333,2166,2167],{"class":335,"line":391},[333,2168,346],{"emptyLinePlaceholder":345},[333,2170,2171,2173,2175,2178,2180,2182,2185,2187,2189],{"class":335,"line":396},[333,2172,498],{"class":497},[333,2174,501],{"class":497},[333,2176,2177],{"class":504}," defineNitroPlugin",[333,2179,509],{"class":508},[333,2181,509],{"class":512},[333,2183,2184],{"class":640},"nitroApp",[333,2186,644],{"class":512},[333,2188,647],{"class":633},[333,2190,549],{"class":512},[333,2192,2193,2196,2198,2201,2203,2206,2208,2210,2213,2215,2217,2220],{"class":335,"line":402},[333,2194,2195],{"class":508},"  nitroApp",[333,2197,702],{"class":512},[333,2199,2200],{"class":508},"hooks",[333,2202,702],{"class":512},[333,2204,2205],{"class":504},"hook",[333,2207,509],{"class":518},[333,2209,528],{"class":512},[333,2211,2212],{"class":433},"evlog:drain",[333,2214,528],{"class":512},[333,2216,733],{"class":512},[333,2218,2219],{"class":508}," drain",[333,2221,593],{"class":518},[333,2223,2224,2226],{"class":335,"line":924},[333,2225,590],{"class":512},[333,2227,593],{"class":508},[411,2229,2231],{"id":2230},"enricher-plugin","Enricher Plugin",[323,2233,2236],{"className":487,"code":2234,"filename":2235,"language":490,"meta":329,"style":329},"import {\n  createUserAgentEnricher,\n  createGeoEnricher,\n  createRequestSizeEnricher,\n  createTraceContextEnricher,\n} from 'evlog\u002Fenrichers'\n\nconst enrichers = [\n  createUserAgentEnricher(),\n  createGeoEnricher(),\n  createRequestSizeEnricher(),\n  createTraceContextEnricher(),\n]\n\nexport default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:enrich', (ctx) => {\n    for (const enricher of enrichers) enricher(ctx)\n  })\n})\n","server\u002Fplugins\u002Fevlog-enrich.ts",[307,2237,2238,2244,2251,2258,2265,2272,2285,2289,2300,2309,2317,2325,2333,2338,2342,2362,2396,2425,2432],{"__ignoreMap":329},[333,2239,2240,2242],{"class":335,"line":336},[333,2241,2000],{"class":497},[333,2243,549],{"class":512},[333,2245,2246,2249],{"class":335,"line":342},[333,2247,2248],{"class":508},"  createUserAgentEnricher",[333,2250,539],{"class":512},[333,2252,2253,2256],{"class":335,"line":349},[333,2254,2255],{"class":508},"  createGeoEnricher",[333,2257,539],{"class":512},[333,2259,2260,2263],{"class":335,"line":355},[333,2261,2262],{"class":508},"  createRequestSizeEnricher",[333,2264,539],{"class":512},[333,2266,2267,2270],{"class":335,"line":361},[333,2268,2269],{"class":508},"  createTraceContextEnricher",[333,2271,539],{"class":512},[333,2273,2274,2276,2278,2280,2283],{"class":335,"line":367},[333,2275,590],{"class":512},[333,2277,2013],{"class":497},[333,2279,568],{"class":512},[333,2281,2282],{"class":433},"evlog\u002Fenrichers",[333,2284,2020],{"class":512},[333,2286,2287],{"class":335,"line":373},[333,2288,346],{"emptyLinePlaceholder":345},[333,2290,2291,2293,2296,2298],{"class":335,"line":379},[333,2292,2069],{"class":633},[333,2294,2295],{"class":508}," enrichers ",[333,2297,2075],{"class":512},[333,2299,1739],{"class":508},[333,2301,2302,2304,2307],{"class":335,"line":385},[333,2303,2248],{"class":504},[333,2305,2306],{"class":508},"()",[333,2308,539],{"class":512},[333,2310,2311,2313,2315],{"class":335,"line":391},[333,2312,2255],{"class":504},[333,2314,2306],{"class":508},[333,2316,539],{"class":512},[333,2318,2319,2321,2323],{"class":335,"line":396},[333,2320,2262],{"class":504},[333,2322,2306],{"class":508},[333,2324,539],{"class":512},[333,2326,2327,2329,2331],{"class":335,"line":402},[333,2328,2269],{"class":504},[333,2330,2306],{"class":508},[333,2332,539],{"class":512},[333,2334,2335],{"class":335,"line":924},[333,2336,2337],{"class":508},"]\n",[333,2339,2340],{"class":335,"line":958},[333,2341,346],{"emptyLinePlaceholder":345},[333,2343,2344,2346,2348,2350,2352,2354,2356,2358,2360],{"class":335,"line":1290},[333,2345,498],{"class":497},[333,2347,501],{"class":497},[333,2349,2177],{"class":504},[333,2351,509],{"class":508},[333,2353,509],{"class":512},[333,2355,2184],{"class":640},[333,2357,644],{"class":512},[333,2359,647],{"class":633},[333,2361,549],{"class":512},[333,2363,2364,2366,2368,2370,2372,2374,2376,2378,2381,2383,2385,2387,2390,2392,2394],{"class":335,"line":1296},[333,2365,2195],{"class":508},[333,2367,702],{"class":512},[333,2369,2200],{"class":508},[333,2371,702],{"class":512},[333,2373,2205],{"class":504},[333,2375,509],{"class":518},[333,2377,528],{"class":512},[333,2379,2380],{"class":433},"evlog:enrich",[333,2382,528],{"class":512},[333,2384,733],{"class":512},[333,2386,637],{"class":512},[333,2388,2389],{"class":640},"ctx",[333,2391,644],{"class":512},[333,2393,647],{"class":633},[333,2395,549],{"class":512},[333,2397,2398,2401,2403,2405,2408,2411,2414,2416,2419,2421,2423],{"class":335,"line":1301},[333,2399,2400],{"class":497},"    for",[333,2402,637],{"class":518},[333,2404,2069],{"class":633},[333,2406,2407],{"class":508}," enricher",[333,2409,2410],{"class":512}," of",[333,2412,2413],{"class":508}," enrichers",[333,2415,1190],{"class":518},[333,2417,2418],{"class":504},"enricher",[333,2420,509],{"class":518},[333,2422,2389],{"class":508},[333,2424,593],{"class":518},[333,2426,2427,2430],{"class":335,"line":1316},[333,2428,2429],{"class":512},"  }",[333,2431,593],{"class":518},[333,2433,2435,2437],{"class":335,"line":2434},19,[333,2436,590],{"class":512},[333,2438,593],{"class":508},[1322,2440,1343,2443,1655,2445,2447],{"color":2441,"icon":2442},"neutral","i-lucide-arrow-right",[1345,2444,204],{"href":209},[1345,2446,268],{"href":273}," docs for the full list of available drains and enrichers.",[407,2449,86],{"id":1360},[411,2451,2453],{"id":2452},"head-sampling","Head Sampling",[303,2455,2456],{},"Randomly keep a percentage of logs per level. Runs before the request completes.",[323,2458,2460],{"className":487,"code":2459,"filename":489,"language":490,"meta":329,"style":329},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    sampling: {\n      rates: {\n        info: 10,\n        warn: 50,\n        debug: 5,\n        error: 100,\n      },\n    },\n  },\n})\n",[307,2461,2462,2474,2492,2500,2509,2518,2530,2541,2553,2565,2570,2574,2578],{"__ignoreMap":329},[333,2463,2464,2466,2468,2470,2472],{"class":335,"line":336},[333,2465,498],{"class":497},[333,2467,501],{"class":497},[333,2469,505],{"class":504},[333,2471,509],{"class":508},[333,2473,513],{"class":512},[333,2475,2476,2478,2480,2482,2484,2486,2488,2490],{"class":335,"line":342},[333,2477,519],{"class":518},[333,2479,522],{"class":512},[333,2481,525],{"class":508},[333,2483,528],{"class":512},[333,2485,531],{"class":433},[333,2487,528],{"class":512},[333,2489,536],{"class":508},[333,2491,539],{"class":512},[333,2493,2494,2496,2498],{"class":335,"line":349},[333,2495,544],{"class":518},[333,2497,522],{"class":512},[333,2499,549],{"class":512},[333,2501,2502,2505,2507],{"class":335,"line":355},[333,2503,2504],{"class":518},"    sampling",[333,2506,522],{"class":512},[333,2508,549],{"class":512},[333,2510,2511,2514,2516],{"class":335,"line":361},[333,2512,2513],{"class":518},"      rates",[333,2515,522],{"class":512},[333,2517,549],{"class":512},[333,2519,2520,2523,2525,2528],{"class":335,"line":367},[333,2521,2522],{"class":518},"        info",[333,2524,522],{"class":512},[333,2526,2527],{"class":1009}," 10",[333,2529,539],{"class":512},[333,2531,2532,2535,2537,2539],{"class":335,"line":373},[333,2533,2534],{"class":518},"        warn",[333,2536,522],{"class":512},[333,2538,2107],{"class":1009},[333,2540,539],{"class":512},[333,2542,2543,2546,2548,2551],{"class":335,"line":379},[333,2544,2545],{"class":518},"        debug",[333,2547,522],{"class":512},[333,2549,2550],{"class":1009}," 5",[333,2552,539],{"class":512},[333,2554,2555,2558,2560,2563],{"class":335,"line":385},[333,2556,2557],{"class":518},"        error",[333,2559,522],{"class":512},[333,2561,2562],{"class":1009}," 100",[333,2564,539],{"class":512},[333,2566,2567],{"class":335,"line":391},[333,2568,2569],{"class":512},"      },\n",[333,2571,2572],{"class":335,"line":396},[333,2573,580],{"class":512},[333,2575,2576],{"class":335,"line":402},[333,2577,585],{"class":512},[333,2579,2580,2582],{"class":335,"line":924},[333,2581,590],{"class":512},[333,2583,593],{"class":508},[303,2585,2586],{},"Each level is a percentage from 0 to 100. Levels you don't configure default to 100% (keep everything). Error defaults to 100% even when other levels are configured.",[411,2588,2590],{"id":2589},"tail-sampling","Tail Sampling",[303,2592,2593],{},"Evaluate after the request completes and force-keep logs that match specific conditions, regardless of head sampling.",[323,2595,2597],{"className":487,"code":2596,"filename":489,"language":490,"meta":329,"style":329},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    sampling: {\n      rates: { info: 10 },\n      keep: [\n        { duration: 1000 },\n        { status: 400 },\n        { path: '\u002Fapi\u002Fcritical\u002F**' },\n      ],\n    },\n  },\n})\n",[307,2598,2599,2611,2629,2637,2645,2662,2671,2686,2699,2717,2724,2728,2732],{"__ignoreMap":329},[333,2600,2601,2603,2605,2607,2609],{"class":335,"line":336},[333,2602,498],{"class":497},[333,2604,501],{"class":497},[333,2606,505],{"class":504},[333,2608,509],{"class":508},[333,2610,513],{"class":512},[333,2612,2613,2615,2617,2619,2621,2623,2625,2627],{"class":335,"line":342},[333,2614,519],{"class":518},[333,2616,522],{"class":512},[333,2618,525],{"class":508},[333,2620,528],{"class":512},[333,2622,531],{"class":433},[333,2624,528],{"class":512},[333,2626,536],{"class":508},[333,2628,539],{"class":512},[333,2630,2631,2633,2635],{"class":335,"line":349},[333,2632,544],{"class":518},[333,2634,522],{"class":512},[333,2636,549],{"class":512},[333,2638,2639,2641,2643],{"class":335,"line":355},[333,2640,2504],{"class":518},[333,2642,522],{"class":512},[333,2644,549],{"class":512},[333,2646,2647,2649,2651,2653,2656,2658,2660],{"class":335,"line":361},[333,2648,2513],{"class":518},[333,2650,522],{"class":512},[333,2652,718],{"class":512},[333,2654,2655],{"class":518}," info",[333,2657,522],{"class":512},[333,2659,2527],{"class":1009},[333,2661,1877],{"class":512},[333,2663,2664,2667,2669],{"class":335,"line":367},[333,2665,2666],{"class":518},"      keep",[333,2668,522],{"class":512},[333,2670,1739],{"class":508},[333,2672,2673,2676,2679,2681,2684],{"class":335,"line":373},[333,2674,2675],{"class":512},"        {",[333,2677,2678],{"class":518}," duration",[333,2680,522],{"class":512},[333,2682,2683],{"class":1009}," 1000",[333,2685,1877],{"class":512},[333,2687,2688,2690,2693,2695,2697],{"class":335,"line":379},[333,2689,2675],{"class":512},[333,2691,2692],{"class":518}," status",[333,2694,522],{"class":512},[333,2696,1214],{"class":1009},[333,2698,1877],{"class":512},[333,2700,2701,2703,2706,2708,2710,2713,2715],{"class":335,"line":385},[333,2702,2675],{"class":512},[333,2704,2705],{"class":518}," path",[333,2707,522],{"class":512},[333,2709,568],{"class":512},[333,2711,2712],{"class":433},"\u002Fapi\u002Fcritical\u002F**",[333,2714,528],{"class":512},[333,2716,1877],{"class":512},[333,2718,2719,2722],{"class":335,"line":391},[333,2720,2721],{"class":508},"      ]",[333,2723,539],{"class":512},[333,2725,2726],{"class":335,"line":396},[333,2727,580],{"class":512},[333,2729,2730],{"class":335,"line":402},[333,2731,585],{"class":512},[333,2733,2734,2736],{"class":335,"line":924},[333,2735,590],{"class":512},[333,2737,593],{"class":508},[411,2739,2741],{"id":2740},"custom-tail-sampling","Custom Tail Sampling",[303,2743,2744,2745,2748],{},"For conditions beyond status, duration, and path, use the ",[307,2746,2747],{},"evlog:emit:keep"," hook:",[323,2750,2753],{"className":487,"code":2751,"filename":2752,"language":490,"meta":329,"style":329},"export default defineNitroPlugin((nitroApp) => {\n  nitroApp.hooks.hook('evlog:emit:keep', (ctx) => {\n    const user = ctx.context.user as { premium?: boolean } | undefined\n    if (user?.premium) {\n      ctx.shouldKeep = true\n    }\n  })\n})\n","server\u002Fplugins\u002Fevlog-sampling.ts",[307,2754,2755,2775,2807,2851,2870,2885,2890,2896],{"__ignoreMap":329},[333,2756,2757,2759,2761,2763,2765,2767,2769,2771,2773],{"class":335,"line":336},[333,2758,498],{"class":497},[333,2760,501],{"class":497},[333,2762,2177],{"class":504},[333,2764,509],{"class":508},[333,2766,509],{"class":512},[333,2768,2184],{"class":640},[333,2770,644],{"class":512},[333,2772,647],{"class":633},[333,2774,549],{"class":512},[333,2776,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805],{"class":335,"line":342},[333,2778,2195],{"class":508},[333,2780,702],{"class":512},[333,2782,2200],{"class":508},[333,2784,702],{"class":512},[333,2786,2205],{"class":504},[333,2788,509],{"class":518},[333,2790,528],{"class":512},[333,2792,2747],{"class":433},[333,2794,528],{"class":512},[333,2796,733],{"class":512},[333,2798,637],{"class":512},[333,2800,2389],{"class":640},[333,2802,644],{"class":512},[333,2804,647],{"class":633},[333,2806,549],{"class":512},[333,2808,2809,2812,2814,2816,2819,2821,2824,2826,2829,2832,2834,2837,2840,2843,2845,2848],{"class":335,"line":349},[333,2810,2811],{"class":633},"    const",[333,2813,713],{"class":508},[333,2815,660],{"class":512},[333,2817,2818],{"class":508}," ctx",[333,2820,702],{"class":512},[333,2822,2823],{"class":508},"context",[333,2825,702],{"class":512},[333,2827,2828],{"class":508},"user",[333,2830,2831],{"class":497}," as",[333,2833,718],{"class":512},[333,2835,2836],{"class":518}," premium",[333,2838,2839],{"class":512},"?:",[333,2841,2842],{"class":430}," boolean",[333,2844,748],{"class":512},[333,2846,2847],{"class":512}," |",[333,2849,2850],{"class":430}," undefined\n",[333,2852,2853,2856,2858,2860,2863,2866,2868],{"class":335,"line":355},[333,2854,2855],{"class":497},"    if",[333,2857,637],{"class":518},[333,2859,2828],{"class":508},[333,2861,2862],{"class":512},"?.",[333,2864,2865],{"class":508},"premium",[333,2867,1190],{"class":518},[333,2869,513],{"class":512},[333,2871,2872,2875,2877,2880,2882],{"class":335,"line":361},[333,2873,2874],{"class":508},"      ctx",[333,2876,702],{"class":512},[333,2878,2879],{"class":508},"shouldKeep",[333,2881,660],{"class":512},[333,2883,2884],{"class":937}," true\n",[333,2886,2887],{"class":335,"line":367},[333,2888,2889],{"class":512},"    }\n",[333,2891,2892,2894],{"class":335,"line":373},[333,2893,2429],{"class":512},[333,2895,593],{"class":518},[333,2897,2898,2900],{"class":335,"line":379},[333,2899,590],{"class":512},[333,2901,593],{"class":508},[1322,2903,2904,2905,2908],{"color":1324,"icon":13},"Errors are always kept by default. You have to explicitly set ",[307,2906,2907],{},"error: 0"," to drop them.",[407,2910,2912],{"id":2911},"client-transport","Client Transport",[303,2914,2915],{},"Send browser logs to your server for processing and draining alongside server-side events.",[323,2917,2919],{"className":487,"code":2918,"filename":489,"language":490,"meta":329,"style":329},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    transport: {\n      enabled: true,\n      endpoint: '\u002Fapi\u002F_evlog\u002Fingest',\n    },\n  },\n})\n",[307,2920,2921,2933,2951,2959,2968,2979,2995,2999,3003],{"__ignoreMap":329},[333,2922,2923,2925,2927,2929,2931],{"class":335,"line":336},[333,2924,498],{"class":497},[333,2926,501],{"class":497},[333,2928,505],{"class":504},[333,2930,509],{"class":508},[333,2932,513],{"class":512},[333,2934,2935,2937,2939,2941,2943,2945,2947,2949],{"class":335,"line":342},[333,2936,519],{"class":518},[333,2938,522],{"class":512},[333,2940,525],{"class":508},[333,2942,528],{"class":512},[333,2944,531],{"class":433},[333,2946,528],{"class":512},[333,2948,536],{"class":508},[333,2950,539],{"class":512},[333,2952,2953,2955,2957],{"class":335,"line":349},[333,2954,544],{"class":518},[333,2956,522],{"class":512},[333,2958,549],{"class":512},[333,2960,2961,2964,2966],{"class":335,"line":355},[333,2962,2963],{"class":518},"    transport",[333,2965,522],{"class":512},[333,2967,549],{"class":512},[333,2969,2970,2973,2975,2977],{"class":335,"line":361},[333,2971,2972],{"class":518},"      enabled",[333,2974,522],{"class":512},[333,2976,938],{"class":937},[333,2978,539],{"class":512},[333,2980,2981,2984,2986,2988,2991,2993],{"class":335,"line":367},[333,2982,2983],{"class":518},"      endpoint",[333,2985,522],{"class":512},[333,2987,568],{"class":512},[333,2989,2990],{"class":433},"\u002Fapi\u002F_evlog\u002Fingest",[333,2992,528],{"class":512},[333,2994,539],{"class":512},[333,2996,2997],{"class":335,"line":373},[333,2998,580],{"class":512},[333,3000,3001],{"class":335,"line":379},[333,3002,585],{"class":512},[333,3004,3005,3007],{"class":335,"line":385},[333,3006,590],{"class":512},[333,3008,593],{"class":508},[411,3010,3012],{"id":3011},"how-it-works","How It Works",[3014,3015,3016,3023,3029,3032,3040],"ol",{},[3017,3018,3019,3020],"li",{},"Client calls ",[307,3021,3022],{},"log.info({ action: 'click', button: 'submit' })",[3017,3024,3025,3026,3028],{},"Log is sent to ",[307,3027,2990],{}," via POST",[3017,3030,3031],{},"Server enriches with environment context",[3017,3033,3034,3036,3037],{},[307,3035,2212],{}," hook is called with ",[307,3038,3039],{},"source: 'client'",[3017,3041,3042],{},"External services receive the log",[411,3044,3046],{"id":3045},"client-identity","Client Identity",[303,3048,3049,3050,522],{},"Attach user context to every client log with ",[307,3051,3052],{},"setIdentity",[323,3054,3057],{"className":487,"code":3055,"filename":3056,"language":490,"meta":329,"style":329},"\u002F\u002F After login\nsetIdentity({ userId: 'usr_123', orgId: 'org_456' })\n\nlog.info({ action: 'checkout' })\n\u002F\u002F -> { userId: 'usr_123', orgId: 'org_456', action: 'checkout', ... }\n\n\u002F\u002F After logout\nclearIdentity()\n","Nuxt (auto-imported)",[307,3058,3059,3065,3103,3107,3136,3141,3145,3150],{"__ignoreMap":329},[333,3060,3061],{"class":335,"line":336},[333,3062,3064],{"class":3063},"sHwdD","\u002F\u002F After login\n",[333,3066,3067,3069,3071,3073,3076,3078,3080,3083,3085,3087,3090,3092,3094,3097,3099,3101],{"class":335,"line":342},[333,3068,3052],{"class":504},[333,3070,509],{"class":508},[333,3072,710],{"class":512},[333,3074,3075],{"class":518}," userId",[333,3077,522],{"class":512},[333,3079,568],{"class":512},[333,3081,3082],{"class":433},"usr_123",[333,3084,528],{"class":512},[333,3086,733],{"class":512},[333,3088,3089],{"class":518}," orgId",[333,3091,522],{"class":512},[333,3093,568],{"class":512},[333,3095,3096],{"class":433},"org_456",[333,3098,528],{"class":512},[333,3100,748],{"class":512},[333,3102,593],{"class":508},[333,3104,3105],{"class":335,"line":349},[333,3106,346],{"emptyLinePlaceholder":345},[333,3108,3109,3112,3114,3116,3118,3120,3123,3125,3127,3130,3132,3134],{"class":335,"line":355},[333,3110,3111],{"class":508},"log",[333,3113,702],{"class":512},[333,3115,1324],{"class":504},[333,3117,509],{"class":508},[333,3119,710],{"class":512},[333,3121,3122],{"class":518}," action",[333,3124,522],{"class":512},[333,3126,568],{"class":512},[333,3128,3129],{"class":433},"checkout",[333,3131,528],{"class":512},[333,3133,748],{"class":512},[333,3135,593],{"class":508},[333,3137,3138],{"class":335,"line":361},[333,3139,3140],{"class":3063},"\u002F\u002F -> { userId: 'usr_123', orgId: 'org_456', action: 'checkout', ... }\n",[333,3142,3143],{"class":335,"line":367},[333,3144,346],{"emptyLinePlaceholder":345},[333,3146,3147],{"class":335,"line":373},[333,3148,3149],{"class":3063},"\u002F\u002F After logout\n",[333,3151,3152,3155],{"class":335,"line":379},[333,3153,3154],{"class":504},"clearIdentity",[333,3156,3157],{"class":508},"()\n",[411,3159,3161],{"id":3160},"syncing-identity-with-auth","Syncing Identity with Auth",[303,3163,3164],{},"Use a route middleware to keep identity in sync with your auth state:",[323,3166,3169],{"className":487,"code":3167,"filename":3168,"language":490,"meta":329,"style":329},"export default defineNuxtRouteMiddleware(() => {\n  const { user } = useAuth()\n\n  if (user.value) {\n    setIdentity({ userId: user.value.id, email: user.value.email })\n  } else {\n    clearIdentity()\n  }\n})\n","middleware\u002Fidentity.global.ts",[307,3170,3171,3188,3205,3209,3226,3272,3281,3288,3292],{"__ignoreMap":329},[333,3172,3173,3175,3177,3180,3182,3184,3186],{"class":335,"line":336},[333,3174,498],{"class":497},[333,3176,501],{"class":497},[333,3178,3179],{"class":504}," defineNuxtRouteMiddleware",[333,3181,509],{"class":508},[333,3183,2306],{"class":512},[333,3185,647],{"class":633},[333,3187,549],{"class":512},[333,3189,3190,3192,3194,3196,3198,3200,3203],{"class":335,"line":342},[333,3191,654],{"class":633},[333,3193,718],{"class":512},[333,3195,713],{"class":508},[333,3197,748],{"class":512},[333,3199,660],{"class":512},[333,3201,3202],{"class":504}," useAuth",[333,3204,3157],{"class":518},[333,3206,3207],{"class":335,"line":349},[333,3208,346],{"emptyLinePlaceholder":345},[333,3210,3211,3213,3215,3217,3219,3222,3224],{"class":335,"line":355},[333,3212,1173],{"class":497},[333,3214,637],{"class":518},[333,3216,2828],{"class":508},[333,3218,702],{"class":512},[333,3220,3221],{"class":508},"value",[333,3223,1190],{"class":518},[333,3225,513],{"class":512},[333,3227,3228,3231,3233,3235,3237,3239,3241,3243,3245,3247,3250,3252,3255,3257,3259,3261,3263,3265,3268,3270],{"class":335,"line":361},[333,3229,3230],{"class":504},"    setIdentity",[333,3232,509],{"class":518},[333,3234,710],{"class":512},[333,3236,3075],{"class":518},[333,3238,522],{"class":512},[333,3240,713],{"class":508},[333,3242,702],{"class":512},[333,3244,3221],{"class":508},[333,3246,702],{"class":512},[333,3248,3249],{"class":508},"id",[333,3251,733],{"class":512},[333,3253,3254],{"class":518}," email",[333,3256,522],{"class":512},[333,3258,713],{"class":508},[333,3260,702],{"class":512},[333,3262,3221],{"class":508},[333,3264,702],{"class":512},[333,3266,3267],{"class":508},"email",[333,3269,748],{"class":512},[333,3271,593],{"class":518},[333,3273,3274,3276,3279],{"class":335,"line":367},[333,3275,2429],{"class":512},[333,3277,3278],{"class":497}," else",[333,3280,549],{"class":512},[333,3282,3283,3286],{"class":335,"line":373},[333,3284,3285],{"class":504},"    clearIdentity",[333,3287,3157],{"class":518},[333,3289,3290],{"class":335,"line":379},[333,3291,1293],{"class":512},[333,3293,3294,3296],{"class":335,"line":385},[333,3295,590],{"class":512},[333,3297,593],{"class":508},[407,3299,3301],{"id":3300},"production-tips","Production Tips",[303,3303,3304,3305,3308],{},"Use Nuxt's ",[307,3306,3307],{},"$production"," override to keep full logging in development while sampling and disabling console output in production:",[323,3310,3312],{"className":487,"code":3311,"filename":489,"language":490,"meta":329,"style":329},"export default defineNuxtConfig({\n  modules: ['evlog\u002Fnuxt'],\n  evlog: {\n    env: { service: 'my-app' },\n  },\n  $production: {\n    evlog: {\n      console: false,\n      sampling: {\n        rates: { info: 10, warn: 50, debug: 0 },\n        keep: [{ duration: 1000 }, { status: 400 }],\n      },\n    },\n  },\n})\n",[307,3313,3314,3326,3344,3352,3372,3376,3385,3394,3406,3415,3450,3484,3488,3492,3496],{"__ignoreMap":329},[333,3315,3316,3318,3320,3322,3324],{"class":335,"line":336},[333,3317,498],{"class":497},[333,3319,501],{"class":497},[333,3321,505],{"class":504},[333,3323,509],{"class":508},[333,3325,513],{"class":512},[333,3327,3328,3330,3332,3334,3336,3338,3340,3342],{"class":335,"line":342},[333,3329,519],{"class":518},[333,3331,522],{"class":512},[333,3333,525],{"class":508},[333,3335,528],{"class":512},[333,3337,531],{"class":433},[333,3339,528],{"class":512},[333,3341,536],{"class":508},[333,3343,539],{"class":512},[333,3345,3346,3348,3350],{"class":335,"line":349},[333,3347,544],{"class":518},[333,3349,522],{"class":512},[333,3351,549],{"class":512},[333,3353,3354,3356,3358,3360,3362,3364,3366,3368,3370],{"class":335,"line":355},[333,3355,554],{"class":518},[333,3357,522],{"class":512},[333,3359,718],{"class":512},[333,3361,1865],{"class":518},[333,3363,522],{"class":512},[333,3365,568],{"class":512},[333,3367,571],{"class":433},[333,3369,528],{"class":512},[333,3371,1877],{"class":512},[333,3373,3374],{"class":335,"line":361},[333,3375,585],{"class":512},[333,3377,3378,3381,3383],{"class":335,"line":367},[333,3379,3380],{"class":518},"  $production",[333,3382,522],{"class":512},[333,3384,549],{"class":512},[333,3386,3387,3390,3392],{"class":335,"line":373},[333,3388,3389],{"class":518},"    evlog",[333,3391,522],{"class":512},[333,3393,549],{"class":512},[333,3395,3396,3399,3401,3404],{"class":335,"line":379},[333,3397,3398],{"class":518},"      console",[333,3400,522],{"class":512},[333,3402,3403],{"class":937}," false",[333,3405,539],{"class":512},[333,3407,3408,3411,3413],{"class":335,"line":385},[333,3409,3410],{"class":518},"      sampling",[333,3412,522],{"class":512},[333,3414,549],{"class":512},[333,3416,3417,3420,3422,3424,3426,3428,3430,3432,3435,3437,3439,3441,3444,3446,3448],{"class":335,"line":391},[333,3418,3419],{"class":518},"        rates",[333,3421,522],{"class":512},[333,3423,718],{"class":512},[333,3425,2655],{"class":518},[333,3427,522],{"class":512},[333,3429,2527],{"class":1009},[333,3431,733],{"class":512},[333,3433,3434],{"class":518}," warn",[333,3436,522],{"class":512},[333,3438,2107],{"class":1009},[333,3440,733],{"class":512},[333,3442,3443],{"class":518}," debug",[333,3445,522],{"class":512},[333,3447,1187],{"class":1009},[333,3449,1877],{"class":512},[333,3451,3452,3455,3457,3459,3461,3463,3465,3467,3470,3472,3474,3476,3478,3480,3482],{"class":335,"line":396},[333,3453,3454],{"class":518},"        keep",[333,3456,522],{"class":512},[333,3458,525],{"class":508},[333,3460,710],{"class":512},[333,3462,2678],{"class":518},[333,3464,522],{"class":512},[333,3466,2683],{"class":1009},[333,3468,3469],{"class":512}," },",[333,3471,718],{"class":512},[333,3473,2692],{"class":518},[333,3475,522],{"class":512},[333,3477,1214],{"class":1009},[333,3479,748],{"class":512},[333,3481,536],{"class":508},[333,3483,539],{"class":512},[333,3485,3486],{"class":335,"line":402},[333,3487,2569],{"class":512},[333,3489,3490],{"class":335,"line":924},[333,3491,580],{"class":512},[333,3493,3494],{"class":335,"line":958},[333,3495,585],{"class":512},[333,3497,3498,3500],{"class":335,"line":1290},[333,3499,590],{"class":512},[333,3501,593],{"class":508},[407,3503,3505],{"id":3504},"next-steps","Next Steps",[303,3507,3508,3509,3511],{},"Deepen your ",[1796,3510,125],{}," integration:",[3513,3514,3515,3520,3525,3530],"ul",{},[3017,3516,3517,3519],{},[1345,3518,46],{"href":47},": Design comprehensive events with context layering",[3017,3521,3522,3524],{},[1345,3523,204],{"href":209},": Send logs to Axiom, Sentry, PostHog, and more",[3017,3526,3527,3529],{},[1345,3528,86],{"href":87},": Control log volume with head and tail sampling",[3017,3531,3532,3534,3535,310,3537,314,3539,3541],{},[1345,3533,51],{"href":52},": Throw errors with ",[307,3536,1055],{},[307,3538,1058],{},[307,3540,1061],{}," fields",[3543,3544,3545],"style",{},"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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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}",{"title":329,"searchDepth":342,"depth":342,"links":3547},[3548,3552,3553,3554,3555,3558,3562,3567,3572,3573],{"id":409,"depth":342,"text":20,"children":3549},[3550,3551],{"id":413,"depth":349,"text":414},{"id":483,"depth":349,"text":484},{"id":606,"depth":342,"text":46},{"id":1046,"depth":342,"text":1047},{"id":1339,"depth":342,"text":81},{"id":1648,"depth":342,"text":1649,"children":3556},[3557],{"id":1807,"depth":349,"text":1808},{"id":1981,"depth":342,"text":1982,"children":3559},[3560,3561],{"id":1988,"depth":349,"text":1989},{"id":2230,"depth":349,"text":2231},{"id":1360,"depth":342,"text":86,"children":3563},[3564,3565,3566],{"id":2452,"depth":349,"text":2453},{"id":2589,"depth":349,"text":2590},{"id":2740,"depth":349,"text":2741},{"id":2911,"depth":342,"text":2912,"children":3568},[3569,3570,3571],{"id":3011,"depth":349,"text":3012},{"id":3045,"depth":349,"text":3046},{"id":3160,"depth":349,"text":3161},{"id":3300,"depth":342,"text":3301},{"id":3504,"depth":342,"text":3505},"Automatic wide events, structured errors, drain adapters, enrichers, tail sampling, and client transport in Nuxt applications.","md",null,{},{"title":125,"icon":128},{"title":125,"description":3574},"g_0SAukX2rCiIQouejdjengWVOsEhYdrm600bCsFocQ",[3582,3584],{"title":36,"path":121,"stem":122,"description":3583,"icon":123,"children":-1},"evlog supports every major TypeScript framework. Choose your stack and get started in minutes.",{"title":130,"path":131,"stem":132,"description":3585,"icon":133,"children":-1},"Wide events, structured errors, drain pipeline, tail sampling, route-based services, error handling, and client-side logging in Next.js applications.",1776287859487]