Fix #3625: add the clear logs function.

This commit is contained in:
Ben
2024-04-03 09:21:13 +08:00
parent 578b7b0512
commit 4c08a527be
8 changed files with 104 additions and 49 deletions

View File

@ -53,20 +53,20 @@ namespace Oqtane.Repository
db.SaveChanges();
}
public int DeleteLogs(int siteId, int age)
public int DeleteLogs(int siteId, int age, bool includeErrors = false)
{
using var db = _dbContextFactory.CreateDbContext();
// delete logs in batches of 100 records
var count = 0;
var purgedate = DateTime.UtcNow.AddDays(-age);
var logs = db.Log.Where(item => item.SiteId == siteId && item.Level != "Error" && item.LogDate < purgedate)
var logs = db.Log.Where(item => item.SiteId == siteId && (includeErrors || item.Level != "Error") && item.LogDate < purgedate)
.OrderBy(item => item.LogDate).Take(100).ToList();
while (logs.Count > 0)
{
count += logs.Count;
db.Log.RemoveRange(logs);
db.SaveChanges();
logs = db.Log.Where(item => item.SiteId == siteId && item.Level != "Error" && item.LogDate < purgedate)
logs = db.Log.Where(item => item.SiteId == siteId && (includeErrors || item.Level != "Error") && item.LogDate < purgedate)
.OrderBy(item => item.LogDate).Take(100).ToList();
}
return count;