[{"data":1,"prerenderedAt":860},["ShallowReactive",2],{"navigation_docs":3,"-nuxthub-retention":301,"-nuxthub-retention-surround":856},[4,30,75,119,207,271,287],{"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,70],{"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,"icon":74},"Audit Logs","\u002Flogging\u002Faudit","2.logging\u002F7.audit","i-lucide-shield-check",{"title":76,"path":77,"stem":78,"children":79,"page":29},"Core Concepts","\u002Fcore-concepts","3.core-concepts",[80,85,90,95,100,104,109,114],{"title":81,"path":82,"stem":83,"icon":84},"Lifecycle","\u002Fcore-concepts\u002Flifecycle","3.core-concepts\u002F0.lifecycle","i-lucide-arrow-right-left",{"title":86,"path":87,"stem":88,"icon":89},"Configuration","\u002Fcore-concepts\u002Fconfiguration","3.core-concepts\u002F1.configuration","i-lucide-settings",{"title":91,"path":92,"stem":93,"icon":94},"Sampling","\u002Fcore-concepts\u002Fsampling","3.core-concepts\u002F2.sampling","i-lucide-filter",{"title":96,"path":97,"stem":98,"icon":99},"Typed Fields","\u002Fcore-concepts\u002Ftyped-fields","3.core-concepts\u002F3.typed-fields","i-simple-icons-typescript",{"title":101,"path":102,"stem":103,"icon":74},"Best Practices","\u002Fcore-concepts\u002Fbest-practices","3.core-concepts\u002F4.best-practices",{"title":105,"path":106,"stem":107,"icon":108},"Performance","\u002Fcore-concepts\u002Fperformance","3.core-concepts\u002F5.performance","i-lucide-gauge",{"title":110,"path":111,"stem":112,"icon":113},"Vite Plugin","\u002Fcore-concepts\u002Fvite-plugin","3.core-concepts\u002F6.vite-plugin","i-custom-vite",{"title":115,"path":116,"stem":117,"icon":118},"Auto-Redaction","\u002Fcore-concepts\u002Fredaction","3.core-concepts\u002F7.redaction","i-lucide-eye-off",{"title":120,"path":121,"stem":122,"children":123,"page":29},"Frameworks","\u002Fframeworks","4.frameworks",[124,128,133,138,143,148,153,158,163,168,173,178,183,188,192,197,202],{"title":36,"path":125,"stem":126,"icon":127},"\u002Fframeworks\u002Foverview","4.frameworks\u002F00.overview","i-lucide-layout-grid",{"title":129,"path":130,"stem":131,"icon":132},"Nuxt","\u002Fframeworks\u002Fnuxt","4.frameworks\u002F01.nuxt","i-simple-icons-nuxtdotjs",{"title":134,"path":135,"stem":136,"icon":137},"Next.js","\u002Fframeworks\u002Fnextjs","4.frameworks\u002F02.nextjs","i-simple-icons-nextdotjs",{"title":139,"path":140,"stem":141,"icon":142},"SvelteKit","\u002Fframeworks\u002Fsveltekit","4.frameworks\u002F03.sveltekit","i-simple-icons-svelte",{"title":144,"path":145,"stem":146,"icon":147},"Nitro","\u002Fframeworks\u002Fnitro","4.frameworks\u002F04.nitro","i-custom-nitro",{"title":149,"path":150,"stem":151,"icon":152},"TanStack Start","\u002Fframeworks\u002Ftanstack-start","4.frameworks\u002F05.tanstack-start","i-custom-tanstack",{"title":154,"path":155,"stem":156,"icon":157},"NestJS","\u002Fframeworks\u002Fnestjs","4.frameworks\u002F06.nestjs","i-simple-icons-nestjs",{"title":159,"path":160,"stem":161,"icon":162},"Express","\u002Fframeworks\u002Fexpress","4.frameworks\u002F07.express","i-simple-icons-express",{"title":164,"path":165,"stem":166,"icon":167},"Hono","\u002Fframeworks\u002Fhono","4.frameworks\u002F08.hono","i-simple-icons-hono",{"title":169,"path":170,"stem":171,"icon":172},"Fastify","\u002Fframeworks\u002Ffastify","4.frameworks\u002F09.fastify","i-simple-icons-fastify",{"title":174,"path":175,"stem":176,"icon":177},"Elysia","\u002Fframeworks\u002Felysia","4.frameworks\u002F10.elysia","i-custom-elysia",{"title":179,"path":180,"stem":181,"icon":182},"React Router","\u002Fframeworks\u002Freact-router","4.frameworks\u002F11.react-router","i-custom-reactrouter",{"title":184,"path":185,"stem":186,"icon":187},"Cloudflare Workers","\u002Fframeworks\u002Fcloudflare-workers","4.frameworks\u002F12.cloudflare-workers","i-simple-icons-cloudflare",{"title":189,"path":190,"stem":191,"icon":99},"Standalone","\u002Fframeworks\u002Fstandalone","4.frameworks\u002F13.standalone",{"title":193,"path":194,"stem":195,"icon":196},"Astro","\u002Fframeworks\u002Fastro","4.frameworks\u002F14.astro","i-simple-icons-astro",{"title":198,"path":199,"stem":200,"icon":201},"Custom Integration","\u002Fframeworks\u002Fcustom-integration","4.frameworks\u002F15.custom-integration","i-lucide-puzzle",{"title":203,"path":204,"stem":205,"icon":206},"AWS Lambda","\u002Fframeworks\u002Faws-lambda","4.frameworks\u002F16.aws-lambda","i-custom-lambda",{"title":208,"path":209,"stem":210,"children":211,"page":29},"Adapters","\u002Fadapters","5.adapters",[212,216,221,226,231,236,241,246,251,256,261,266],{"title":36,"path":213,"stem":214,"icon":215},"\u002Fadapters\u002Foverview","5.adapters\u002F1.overview","i-custom-plug",{"title":217,"path":218,"stem":219,"icon":220},"Custom Adapters","\u002Fadapters\u002Fcustom","5.adapters\u002F10.custom","i-lucide-code",{"title":222,"path":223,"stem":224,"icon":225},"Pipeline","\u002Fadapters\u002Fpipeline","5.adapters\u002F11.pipeline","i-lucide-workflow",{"title":227,"path":228,"stem":229,"icon":230},"HTTP","\u002Fadapters\u002Fhttp","5.adapters\u002F12.http","i-lucide-globe",{"title":232,"path":233,"stem":234,"icon":235},"Axiom","\u002Fadapters\u002Faxiom","5.adapters\u002F2.axiom","i-custom-axiom",{"title":237,"path":238,"stem":239,"icon":240},"OTLP","\u002Fadapters\u002Fotlp","5.adapters\u002F3.otlp","i-simple-icons-opentelemetry",{"title":242,"path":243,"stem":244,"icon":245},"PostHog","\u002Fadapters\u002Fposthog","5.adapters\u002F4.posthog","i-simple-icons-posthog",{"title":247,"path":248,"stem":249,"icon":250},"Sentry","\u002Fadapters\u002Fsentry","5.adapters\u002F5.sentry","i-simple-icons-sentry",{"title":252,"path":253,"stem":254,"icon":255},"Better Stack","\u002Fadapters\u002Fbetter-stack","5.adapters\u002F6.better-stack","i-simple-icons-betterstack",{"title":257,"path":258,"stem":259,"icon":260},"File System","\u002Fadapters\u002Ffs","5.adapters\u002F7.fs","i-lucide-hard-drive",{"title":262,"path":263,"stem":264,"icon":265},"Datadog","\u002Fadapters\u002Fdatadog","5.adapters\u002F8.datadog","i-simple-icons-datadog",{"title":267,"path":268,"stem":269,"icon":270},"HyperDX","\u002Fadapters\u002Fhyperdx","5.adapters\u002F9.hyperdx","i-custom-hyperdx",{"title":272,"path":273,"stem":274,"children":275,"page":29},"Enrichers","\u002Fenrichers","6.enrichers",[276,279,283],{"title":36,"path":277,"stem":278,"icon":28},"\u002Fenrichers\u002Foverview","6.enrichers\u002F1.overview",{"title":280,"path":281,"stem":282,"icon":201},"Built-in","\u002Fenrichers\u002Fbuilt-in","6.enrichers\u002F2.built-in",{"title":284,"path":285,"stem":286,"icon":220},"Custom","\u002Fenrichers\u002Fcustom","6.enrichers\u002F3.custom",{"title":288,"path":289,"stem":290,"children":291,"page":29},"NuxtHub","\u002Fnuxthub","7.nuxthub",[292,296],{"title":36,"path":293,"stem":294,"icon":295},"\u002Fnuxthub\u002Foverview","7.nuxthub\u002F1.overview","i-lucide-database",{"title":297,"path":298,"stem":299,"icon":300},"Retention","\u002Fnuxthub\u002Fretention","7.nuxthub\u002F2.retention","i-lucide-clock",{"id":302,"title":303,"body":304,"description":846,"extension":847,"links":848,"meta":852,"navigation":853,"path":298,"seo":854,"stem":299,"__hash__":855},"docs\u002F7.nuxthub\u002F2.retention.md","Retention & Cleanup",{"type":305,"value":306,"toc":834},"minimark",[307,315,319,326,450,455,458,528,532,539,609,620,624,627,644,648,655,684,687,691,702,789,795,799,806,810,830],[308,309,310,314],"p",{},[311,312,313],"code",{},"@evlog\u002Fnuxthub"," automatically deletes old events based on your retention policy. No manual cleanup needed.",[316,317,86],"h2",{"id":318},"configuration",[308,320,321,322,325],{},"Set the retention period in your ",[311,323,324],{},"nuxt.config.ts",":",[327,328,333],"pre",{"className":329,"code":330,"filename":324,"language":331,"meta":332,"style":332},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@nuxthub\u002Fcore', '@evlog\u002Fnuxthub'],\n\n  evlog: {\n    retention: '7d', \u002F\u002F default\n  },\n})\n","typescript","",[311,334,335,359,396,403,414,435,441],{"__ignoreMap":332},[336,337,340,344,347,351,355],"span",{"class":338,"line":339},"line",1,[336,341,343],{"class":342},"s7zQu","export",[336,345,346],{"class":342}," default",[336,348,350],{"class":349},"s2Zo4"," defineNuxtConfig",[336,352,354],{"class":353},"sTEyZ","(",[336,356,358],{"class":357},"sMK4o","{\n",[336,360,362,366,368,371,374,378,380,383,386,388,390,393],{"class":338,"line":361},2,[336,363,365],{"class":364},"swJcz","  modules",[336,367,325],{"class":357},[336,369,370],{"class":353}," [",[336,372,373],{"class":357},"'",[336,375,377],{"class":376},"sfazB","@nuxthub\u002Fcore",[336,379,373],{"class":357},[336,381,382],{"class":357},",",[336,384,385],{"class":357}," '",[336,387,313],{"class":376},[336,389,373],{"class":357},[336,391,392],{"class":353},"]",[336,394,395],{"class":357},",\n",[336,397,399],{"class":338,"line":398},3,[336,400,402],{"emptyLinePlaceholder":401},true,"\n",[336,404,406,409,411],{"class":338,"line":405},4,[336,407,408],{"class":364},"  evlog",[336,410,325],{"class":357},[336,412,413],{"class":357}," {\n",[336,415,417,420,422,424,427,429,431],{"class":338,"line":416},5,[336,418,419],{"class":364},"    retention",[336,421,325],{"class":357},[336,423,385],{"class":357},[336,425,426],{"class":376},"7d",[336,428,373],{"class":357},[336,430,382],{"class":357},[336,432,434],{"class":433},"sHwdD"," \u002F\u002F default\n",[336,436,438],{"class":338,"line":437},6,[336,439,440],{"class":357},"  },\n",[336,442,444,447],{"class":338,"line":443},7,[336,445,446],{"class":357},"}",[336,448,449],{"class":353},")\n",[451,452,454],"h3",{"id":453},"retention-format","Retention Format",[308,456,457],{},"The retention value is a number followed by a unit:",[459,460,461,477],"table",{},[462,463,464],"thead",{},[465,466,467,471,474],"tr",{},[468,469,470],"th",{},"Unit",[468,472,473],{},"Description",[468,475,476],{},"Example",[478,479,480,496,512],"tbody",{},[465,481,482,488,491],{},[483,484,485],"td",{},[311,486,487],{},"d",[483,489,490],{},"Days",[483,492,493,495],{},[311,494,426],{}," = 7 days",[465,497,498,503,506],{},[483,499,500],{},[311,501,502],{},"h",[483,504,505],{},"Hours",[483,507,508,511],{},[311,509,510],{},"24h"," = 24 hours",[465,513,514,519,522],{},[483,515,516],{},[311,517,518],{},"m",[483,520,521],{},"Minutes",[483,523,524,527],{},[311,525,526],{},"60m"," = 60 minutes",[316,529,531],{"id":530},"how-cleanup-works","How Cleanup Works",[308,533,534,535,538],{},"The module registers a Nitro scheduled task (",[311,536,537],{},"evlog:cleanup",") that runs on a cron schedule derived from your retention value. The cron frequency is set to roughly half the retention period:",[459,540,541,552],{},[462,542,543],{},[465,544,545,547,550],{},[468,546,297],{},[468,548,549],{},"Cron Schedule",[468,551,473],{},[478,553,554,568,582,596],{},[465,555,556,560,565],{},[483,557,558],{},[311,559,526],{},[483,561,562],{},[311,563,564],{},"*\u002F30 * * * *",[483,566,567],{},"Every 30 minutes",[465,569,570,574,579],{},[483,571,572],{},[311,573,510],{},[483,575,576],{},[311,577,578],{},"0 *\u002F12 * * *",[483,580,581],{},"Every 12 hours",[465,583,584,588,593],{},[483,585,586],{},[311,587,426],{},[483,589,590],{},[311,591,592],{},"0 3 * * *",[483,594,595],{},"Daily at 3:00 AM",[465,597,598,603,607],{},[483,599,600],{},[311,601,602],{},"30d",[483,604,605],{},[311,606,592],{},[483,608,595],{},[308,610,611,612,615,616,619],{},"The cleanup task deletes all rows in ",[311,613,614],{},"evlog_events"," where ",[311,617,618],{},"created_at"," is older than the retention period.",[316,621,623],{"id":622},"manual-cleanup","Manual Cleanup",[308,625,626],{},"You can trigger cleanup manually via the API endpoint:",[327,628,633],{"className":629,"code":630,"filename":631,"language":632,"meta":332,"style":332},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl https:\u002F\u002Fyour-app.com\u002Fapi\u002F_cron\u002Fevlog-cleanup\n","Terminal","bash",[311,634,635],{"__ignoreMap":332},[336,636,637,641],{"class":338,"line":339},[336,638,640],{"class":639},"sBMFI","curl",[336,642,643],{"class":376}," https:\u002F\u002Fyour-app.com\u002Fapi\u002F_cron\u002Fevlog-cleanup\n",[451,645,647],{"id":646},"cron-secret-protection","Cron Secret Protection",[308,649,650,651,654],{},"If the ",[311,652,653],{},"CRON_SECRET"," environment variable is set, the endpoint requires a Bearer token:",[327,656,658],{"className":629,"code":657,"filename":631,"language":632,"meta":332,"style":332},"curl -H \"Authorization: Bearer your-secret\" \\\n  https:\u002F\u002Fyour-app.com\u002Fapi\u002F_cron\u002Fevlog-cleanup\n",[311,659,660,679],{"__ignoreMap":332},[336,661,662,664,667,670,673,676],{"class":338,"line":339},[336,663,640],{"class":639},[336,665,666],{"class":376}," -H",[336,668,669],{"class":357}," \"",[336,671,672],{"class":376},"Authorization: Bearer your-secret",[336,674,675],{"class":357},"\"",[336,677,678],{"class":353}," \\\n",[336,680,681],{"class":338,"line":361},[336,682,683],{"class":376},"  https:\u002F\u002Fyour-app.com\u002Fapi\u002F_cron\u002Fevlog-cleanup\n",[308,685,686],{},"This is recommended for production deployments to prevent unauthorized cleanup triggers.",[316,688,690],{"id":689},"vercel-cron","Vercel Cron",[308,692,693,694,697,698,701],{},"When installing the module with ",[311,695,696],{},"nuxi module add",", you'll be prompted to create a ",[311,699,700],{},"vercel.json"," with the appropriate cron schedule:",[327,703,707],{"className":704,"code":705,"filename":700,"language":706,"meta":332,"style":332},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"crons\": [\n    {\n      \"path\": \"\u002Fapi\u002F_cron\u002Fevlog-cleanup\",\n      \"schedule\": \"0 3 * * *\"\n    }\n  ]\n}\n","json",[311,708,709,713,729,734,755,773,778,783],{"__ignoreMap":332},[336,710,711],{"class":338,"line":339},[336,712,358],{"class":357},[336,714,715,718,722,724,726],{"class":338,"line":361},[336,716,717],{"class":357},"  \"",[336,719,721],{"class":720},"spNyl","crons",[336,723,675],{"class":357},[336,725,325],{"class":357},[336,727,728],{"class":357}," [\n",[336,730,731],{"class":338,"line":398},[336,732,733],{"class":357},"    {\n",[336,735,736,739,742,744,746,748,751,753],{"class":338,"line":405},[336,737,738],{"class":357},"      \"",[336,740,741],{"class":639},"path",[336,743,675],{"class":357},[336,745,325],{"class":357},[336,747,669],{"class":357},[336,749,750],{"class":376},"\u002Fapi\u002F_cron\u002Fevlog-cleanup",[336,752,675],{"class":357},[336,754,395],{"class":357},[336,756,757,759,762,764,766,768,770],{"class":338,"line":416},[336,758,738],{"class":357},[336,760,761],{"class":639},"schedule",[336,763,675],{"class":357},[336,765,325],{"class":357},[336,767,669],{"class":357},[336,769,592],{"class":376},[336,771,772],{"class":357},"\"\n",[336,774,775],{"class":338,"line":437},[336,776,777],{"class":357},"    }\n",[336,779,780],{"class":338,"line":443},[336,781,782],{"class":357},"  ]\n",[336,784,786],{"class":338,"line":785},8,[336,787,788],{"class":357},"}\n",[308,790,791,792,794],{},"On Vercel, the ",[311,793,653],{}," environment variable is automatically set and validated.",[316,796,798],{"id":797},"cloudflare-other-platforms","Cloudflare & Other Platforms",[308,800,801,802,805],{},"On Cloudflare Workers and other platforms, the Nitro scheduled task handles cleanup automatically without any additional cron configuration. The task is registered with ",[311,803,804],{},"experimental.tasks"," enabled in the Nitro config.",[316,807,809],{"id":808},"next-steps","Next Steps",[811,812,813,820,825],"ul",{},[814,815,816,819],"li",{},[817,818,36],"a",{"href":293}," - Installation and setup",[814,821,822,824],{},[817,823,208],{"href":213}," - Send logs to external services alongside NuxtHub storage",[814,826,827,829],{},[817,828,222],{"href":223}," - Batch events for better database performance",[831,832,833],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .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 .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .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}",{"title":332,"searchDepth":361,"depth":361,"links":835},[836,839,840,843,844,845],{"id":318,"depth":361,"text":86,"children":837},[838],{"id":453,"depth":398,"text":454},{"id":530,"depth":361,"text":531},{"id":622,"depth":361,"text":623,"children":841},[842],{"id":646,"depth":398,"text":647},{"id":689,"depth":361,"text":690},{"id":797,"depth":361,"text":798},{"id":808,"depth":361,"text":809},"Configure how long logs are kept in NuxtHub and how they are automatically cleaned up with scheduled tasks, cron jobs, and retention policies.","md",[849],{"label":36,"icon":295,"to":293,"color":850,"variant":851},"neutral","subtle",{},{"title":297,"icon":300},{"title":303,"description":846},"nYSAmQPl8D0TzOMxJLJ_Wh9ZzwT0QCeVwLygQ6KT_P0",[857,859],{"title":36,"path":293,"stem":294,"description":858,"icon":295,"children":-1},"Self-hosted log retention for evlog using NuxtHub database storage. Store, query, and automatically clean up your structured logs with zero external dependencies.",null,1777048044492]