diff --git a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor
index fc1160df..239d3e9b 100644
--- a/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor
+++ b/Oqtane.Client/Modules/Admin/SystemInfo/Index.razor
@@ -156,6 +156,8 @@
+
+
@@ -222,24 +224,39 @@
}
private async Task SaveConfig()
- {
- try
- {
- var settings = new Dictionary();
- settings.Add("DetailedErrors", _detailederrors);
- settings.Add("Logging:LogLevel:Default", _logginglevel);
- settings.Add("Logging:LogLevel:Notify", _notificationlevel);
- settings.Add("UseSwagger", _swagger);
- settings.Add("PackageService", _packageservice);
- await SystemService.UpdateSystemInfoAsync(settings);
- AddModuleMessage(Localizer["Success.UpdateConfig.Restart"], MessageType.Success);
- }
- catch (Exception ex)
- {
- await logger.LogError(ex, "Error Saving Configuration");
- AddModuleMessage(Localizer["Error.UpdateConfig"], MessageType.Error);
- }
- }
+ {
+ try
+ {
+ var settings = new Dictionary();
+ settings.Add("DetailedErrors", _detailederrors);
+ settings.Add("Logging:LogLevel:Default", _logginglevel);
+ settings.Add("Logging:LogLevel:Notify", _notificationlevel);
+ settings.Add("UseSwagger", _swagger);
+ settings.Add("PackageService", _packageservice);
+ await SystemService.UpdateSystemInfoAsync(settings);
+ AddModuleMessage(Localizer["Success.UpdateConfig.Restart"], MessageType.Success);
+ }
+ catch (Exception ex)
+ {
+ await logger.LogError(ex, "Error Saving Configuration");
+ AddModuleMessage(Localizer["Error.UpdateConfig"], MessageType.Error);
+ }
+ }
+
+ private async Task ClearLog()
+ {
+ try
+ {
+ await SystemService.UpdateSystemInfoAsync("Log", "Clear");
+ _log = string.Empty;
+ AddModuleMessage(Localizer["Success.ClearLog"], MessageType.Success);
+ }
+ catch (Exception ex)
+ {
+ await logger.LogError(ex, "Error Clearing Log");
+ AddModuleMessage(Localizer["Error.ClearLog"], MessageType.Error);
+ }
+ }
private async Task RestartApplication()
{
diff --git a/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx b/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx
index fc84a50a..c5c328cd 100644
--- a/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx
+++ b/Oqtane.Client/Resources/Modules/Admin/SystemInfo/Index.resx
@@ -285,4 +285,13 @@
System log information for current day
+
+ Clear
+
+
+ System Log Has Been Successfully Cleared
+
+
+ Ann Error Occurred Clearing The System Log
+
\ No newline at end of file
diff --git a/Oqtane.Server/Controllers/SystemController.cs b/Oqtane.Server/Controllers/SystemController.cs
index 6e77094d..e6fb098c 100644
--- a/Oqtane.Server/Controllers/SystemController.cs
+++ b/Oqtane.Server/Controllers/SystemController.cs
@@ -84,7 +84,7 @@ namespace Oqtane.Controllers
{
foreach(KeyValuePair kvp in settings)
{
- _configManager.AddOrUpdateSetting(kvp.Key, kvp.Value, false);
+ UpdateSetting(kvp.Key, kvp.Value);
}
}
@@ -93,7 +93,24 @@ namespace Oqtane.Controllers
[Authorize(Roles = RoleNames.Host)]
public void Put(string key, object value)
{
- _configManager.AddOrUpdateSetting(key, value, false);
+ UpdateSetting(key, value);
+ }
+
+ private void UpdateSetting(string key, object value)
+ {
+ switch (key)
+ {
+ case "Log":
+ string path = Path.Combine(_environment.ContentRootPath, "Content", "Log", "error.log");
+ if (System.IO.File.Exists(path))
+ {
+ System.IO.File.Delete(path);
+ }
+ break;
+ default:
+ _configManager.AddOrUpdateSetting(key, value, false);
+ break;
+ }
}
}
}
diff --git a/Oqtane.Server/Migrations/Tenant/03030201_AddFolderFileIsDeletedColumns.cs b/Oqtane.Server/Migrations/Tenant/03030201_AddFolderFileIsDeletedColumns.cs
index d012a5b7..ad954a7d 100644
--- a/Oqtane.Server/Migrations/Tenant/03030201_AddFolderFileIsDeletedColumns.cs
+++ b/Oqtane.Server/Migrations/Tenant/03030201_AddFolderFileIsDeletedColumns.cs
@@ -20,10 +20,10 @@ namespace Oqtane.Migrations.Tenant
if (ActiveDatabase.Name != "Sqlite")
{
var folderEntityBuilder = new FolderEntityBuilder(migrationBuilder, ActiveDatabase);
- folderEntityBuilder.AddBooleanColumn("IsDeleted");
+ folderEntityBuilder.AddBooleanColumn("IsDeleted", true);
var fileEntityBuilder = new FileEntityBuilder(migrationBuilder, ActiveDatabase);
- fileEntityBuilder.AddBooleanColumn("IsDeleted");
+ fileEntityBuilder.AddBooleanColumn("IsDeleted", true);
}
}
diff --git a/Oqtane.Shared/Models/File.cs b/Oqtane.Shared/Models/File.cs
index 9fdae1a0..e90b6af1 100644
--- a/Oqtane.Shared/Models/File.cs
+++ b/Oqtane.Shared/Models/File.cs
@@ -58,7 +58,7 @@ namespace Oqtane.Models
///
/// Deprecated - not used
///
- public bool IsDeleted { get; set; }
+ public bool? IsDeleted { get; set; }
///
/// Object reference to the object.
diff --git a/Oqtane.Shared/Models/Folder.cs b/Oqtane.Shared/Models/Folder.cs
index f6530c23..90bf87bd 100644
--- a/Oqtane.Shared/Models/Folder.cs
+++ b/Oqtane.Shared/Models/Folder.cs
@@ -62,7 +62,7 @@ namespace Oqtane.Models
///
/// Deprecated - not used
///
- public bool IsDeleted { get; set; }
+ public bool? IsDeleted { get; set; }
///
/// TODO: todoc what would this contain?