update code by review result.

This commit is contained in:
Ben 2024-04-03 22:27:39 +08:00
parent 4c08a527be
commit 757a39a75e
5 changed files with 23 additions and 8 deletions

View File

@ -210,7 +210,7 @@
<data name="Success.SaveSiteSettings" xml:space="preserve"> <data name="Success.SaveSiteSettings" xml:space="preserve">
<value>Settings Saved Successfully</value> <value>Settings Saved Successfully</value>
</data> </data>
<data name="ClearLogs" xml:space="preserve"> <data name="ClearLogs.Text" xml:space="preserve">
<value>Clear Logs</value> <value>Clear Logs</value>
</data> </data>
<data name="Confirm.ClearLogs" xml:space="preserve"> <data name="Confirm.ClearLogs" xml:space="preserve">

View File

@ -37,7 +37,7 @@ namespace Oqtane.Services
public async Task ClearLogsAsync(int siteId) public async Task ClearLogsAsync(int siteId)
{ {
await DeleteAsync($"{Apiurl}?siteid={siteId}&includeErrors=true"); await DeleteAsync($"{Apiurl}?siteid={siteId}");
} }
public async Task Log(int? pageId, int? moduleId, int? userId, string category, string feature, LogFunction function, LogLevel level, Exception exception, string message, params object[] args) public async Task Log(int? pageId, int? moduleId, int? userId, string category, string feature, LogFunction function, LogLevel level, Exception exception, string message, params object[] args)

View File

@ -79,11 +79,11 @@ namespace Oqtane.Controllers
[HttpDelete] [HttpDelete]
[Authorize(Roles = RoleNames.Admin)] [Authorize(Roles = RoleNames.Admin)]
public void Delete(string siteId, bool includeErrors) public void Delete(string siteId)
{ {
if (int.TryParse(siteId, out int parsedSiteId) && parsedSiteId == _alias.SiteId) if (int.TryParse(siteId, out int parsedSiteId) && parsedSiteId == _alias.SiteId)
{ {
_logs.DeleteLogs(parsedSiteId, 0, includeErrors); _logs.ClearLogs(parsedSiteId);
} }
else else
{ {

View File

@ -8,6 +8,7 @@ namespace Oqtane.Repository
IEnumerable<Log> GetLogs(int siteId, string level, string function, int rows); IEnumerable<Log> GetLogs(int siteId, string level, string function, int rows);
Log GetLog(int logId); Log GetLog(int logId);
void AddLog(Log log); void AddLog(Log log);
int DeleteLogs(int siteId, int age, bool includeErrors = false); int DeleteLogs(int siteId, int age);
void ClearLogs(int siteId);
} }
} }

View File

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