modify #4099 - fix localization and use Delete rather than Clear in API methods for consistency with rest of framework
This commit is contained in:
parent
160b3ff655
commit
7b95db4d13
|
@ -87,7 +87,7 @@ else
|
|||
</div>
|
||||
<br />
|
||||
<button type="button" class="btn btn-success" @onclick="SaveSiteSettings">@SharedLocalizer["Save"]</button>
|
||||
<ActionDialog Header="Clear Logs" Message="@Localizer["Confirm.ClearLogs"]" Action="ClearLogs" Class="btn btn-secondary" OnClick="@(async () => await ClearLogs())" ResourceKey="ClearLogs" />
|
||||
<ActionDialog Header="Delete Log Events" Message="Are You Sure You Wish To Delete All Log Events?" Action="DeleteLogs" Class="btn btn-danger" OnClick="@(async () => await DeleteLogs())" ResourceKey="DeleteLogs" />
|
||||
</TabPanel>
|
||||
</TabStrip>
|
||||
}
|
||||
|
@ -231,18 +231,18 @@ else
|
|||
}
|
||||
}
|
||||
|
||||
private async Task ClearLogs()
|
||||
private async Task DeleteLogs()
|
||||
{
|
||||
try
|
||||
{
|
||||
await LogService.ClearLogsAsync(PageState.Site.SiteId);
|
||||
await LogService.DeleteLogsAsync(PageState.Site.SiteId);
|
||||
await GetLogs();
|
||||
StateHasChanged();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
await logger.LogError(ex, "Error Clearing Logs {Error}", ex.Message);
|
||||
AddModuleMessage(Localizer["Error.ClearLogs"], MessageType.Error);
|
||||
await logger.LogError(ex, "Error Deleting Logs {Error}", ex.Message);
|
||||
AddModuleMessage(Localizer["Error.DeleteLogs"], MessageType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
@ -210,13 +210,16 @@
|
|||
<data name="Success.SaveSiteSettings" xml:space="preserve">
|
||||
<value>Settings Saved Successfully</value>
|
||||
</data>
|
||||
<data name="ClearLogs.Text" xml:space="preserve">
|
||||
<value>Clear Logs</value>
|
||||
<data name="DeleteLogs.Header" xml:space="preserve">
|
||||
<value>Clear Events</value>
|
||||
</data>
|
||||
<data name="Confirm.ClearLogs" xml:space="preserve">
|
||||
<value>Are you sure you wish to clear all the logs?</value>
|
||||
<data name="DeleteLogs.Message" xml:space="preserve">
|
||||
<value>Are You Sure You Wish To Remove All Log Events?</value>
|
||||
</data>
|
||||
<data name="Error.ClearLogs" xml:space="preserve">
|
||||
<value>Error Clearing Logs</value>
|
||||
<data name="DeleteLogs.Text" xml:space="preserve">
|
||||
<value>Clear Events</value>
|
||||
</data>
|
||||
<data name="Error.DeleteLogs" xml:space="preserve">
|
||||
<value>Error Deleting Log Events</value>
|
||||
</data>
|
||||
</root>
|
|
@ -34,7 +34,7 @@ namespace Oqtane.Services
|
|||
/// </summary>
|
||||
/// <param name="siteId"></param>
|
||||
/// <returns></returns>
|
||||
Task ClearLogsAsync(int siteId);
|
||||
Task DeleteLogsAsync(int siteId);
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new log entry
|
||||
|
|
|
@ -35,7 +35,7 @@ namespace Oqtane.Services
|
|||
return await GetJsonAsync<Log>($"{Apiurl}/{logId}");
|
||||
}
|
||||
|
||||
public async Task ClearLogsAsync(int siteId)
|
||||
public async Task DeleteLogsAsync(int siteId)
|
||||
{
|
||||
await DeleteAsync($"{Apiurl}?siteid={siteId}");
|
||||
}
|
||||
|
|
|
@ -83,7 +83,7 @@ namespace Oqtane.Controllers
|
|||
{
|
||||
if (int.TryParse(siteId, out int parsedSiteId) && parsedSiteId == _alias.SiteId)
|
||||
{
|
||||
_logs.ClearLogs(parsedSiteId);
|
||||
_logs.DeleteLogs(parsedSiteId, 0); // specifying zero for age results in all logs being deleted
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -9,6 +9,5 @@ namespace Oqtane.Repository
|
|||
Log GetLog(int logId);
|
||||
void AddLog(Log log);
|
||||
int DeleteLogs(int siteId, int age);
|
||||
void ClearLogs(int siteId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,31 +59,17 @@ namespace Oqtane.Repository
|
|||
// 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 && 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 && item.LogDate < purgedate)
|
||||
.OrderBy(item => item.LogDate).Take(100).ToList();
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user