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