From 0d8fdb59042ee3758effdb30b9aab9b5df0c0ee0 Mon Sep 17 00:00:00 2001 From: Tudor Andrei Date: Thu, 7 Sep 2023 13:28:49 +0300 Subject: [PATCH] Updated log manager --- PluginManager/Config.cs | 2 +- PluginManager/Others/Enums.cs | 4 +-- PluginManager/Others/Logger/DBLogger.cs | 35 ++++++++++++++++++------ PluginManager/Others/Logger/LogFile.cs | 36 +++++++++++++++++++++++++ 4 files changed, 66 insertions(+), 11 deletions(-) create mode 100644 PluginManager/Others/Logger/LogFile.cs diff --git a/PluginManager/Config.cs b/PluginManager/Config.cs index 16a7491..e2c0de7 100644 --- a/PluginManager/Config.cs +++ b/PluginManager/Config.cs @@ -32,7 +32,7 @@ public class Config AppSettings["LogFolder"] = "./Data/Logs/Logs"; AppSettings["ErrorFolder"] = "./Data/Logs/Errors"; - Logger = new DBLogger(); + Logger = new DBLogger(true); ArchiveManager.Initialize(); diff --git a/PluginManager/Others/Enums.cs b/PluginManager/Others/Enums.cs index 2dd071b..225c554 100644 --- a/PluginManager/Others/Enums.cs +++ b/PluginManager/Others/Enums.cs @@ -30,8 +30,8 @@ public enum UnzipProgressType public enum SaveType { - NORMAL, - BACKUP + TXT, + JSON } public enum InternalActionRunType diff --git a/PluginManager/Others/Logger/DBLogger.cs b/PluginManager/Others/Logger/DBLogger.cs index 44912e7..04fd47c 100644 --- a/PluginManager/Others/Logger/DBLogger.cs +++ b/PluginManager/Others/Logger/DBLogger.cs @@ -13,11 +13,17 @@ public class DBLogger private readonly string _logFolder; private readonly List ErrorHistory = new(); private readonly List LogHistory = new(); + + private readonly bool _continuousSave; + private readonly bool _LogErrorsOnly; - public DBLogger() + public DBLogger(bool continuousSave = true, bool logErrorsOnly = true) { _logFolder = Config.AppSettings["LogFolder"]; _errFolder = Config.AppSettings["ErrorFolder"]; + + _continuousSave = continuousSave; + _LogErrorsOnly = logErrorsOnly; } public IReadOnlyList Logs => LogHistory; @@ -50,7 +56,7 @@ public class DBLogger Log(e.Message, e.Source, LogLevel.ERROR); } - public void Log(LogMessage message) + private async void Log(LogMessage message) { LogEvent?.Invoke(message.Message, message.Type); @@ -58,6 +64,9 @@ public class DBLogger LogHistory.Add(message); else ErrorHistory.Add(message); + + if (_continuousSave) + await SaveToFile(); } public void Log(string message, object sender, LogLevel type = LogLevel.INFO) @@ -65,12 +74,22 @@ public class DBLogger Log(message, sender.GetType().Name, type); } - public async Task SaveToFile(bool ErrorsOnly = true) + public async Task SaveToFile() + { + await SaveToTxt(); + } + + private async Task SaveToTxt() { - if(!ErrorsOnly) - await JsonManager.SaveToJsonFile(_logFolder + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".json", - LogHistory); - await JsonManager.SaveToJsonFile(_errFolder + "/" + DateTime.Now.ToString("yyyy-MM-dd") + ".json", - ErrorHistory); + if (!_LogErrorsOnly) + { + var logFile = new LogFile(_logFolder + $"/{DateTime.Today.ToShortDateString().Replace('/', '_')}_log.txt"); + foreach (var logMessage in LogHistory) + logFile.Write(logMessage); + } + + var errFile = new LogFile(_errFolder + $"/{DateTime.Today.ToShortDateString().Replace('/', '_')}_err.txt"); + foreach (var logMessage in ErrorHistory) + errFile.Write(logMessage); } } diff --git a/PluginManager/Others/Logger/LogFile.cs b/PluginManager/Others/Logger/LogFile.cs new file mode 100644 index 0000000..148ab17 --- /dev/null +++ b/PluginManager/Others/Logger/LogFile.cs @@ -0,0 +1,36 @@ +using System.IO; + +namespace PluginManager.Others.Logger; + +public class LogFile +{ + public FileInfo File { get; set; } + public LogFile(string path) + { + File = new FileInfo(path); + } + + public void Write(string message) + { + using var sw = File.AppendText(); + sw.WriteLine(message); + } + + public void Write(string message, LogLevel type) + { + using var sw = File.AppendText(); + sw.WriteLine($"[{type}] {message}"); + } + + public void Write(string message, string sender, LogLevel type) + { + using var sw = File.AppendText(); + sw.WriteLine($"[{type}] [{sender}] {message}"); + } + + public void Write(LogMessage logMessage) + { + using var sw = File.AppendText(); + sw.WriteLine(logMessage.ToString()); + } +} \ No newline at end of file