using SzCore; using SzCore.Defaults; namespace SzCli; public class Logger : ISzLogger { private DefaultLocalFileManager _fileManager; public bool LogToFile { get; set; } = true; public string LogFilePath { get; set; } public int LogFileMaxLines { get; set; } = 100; public Logger(DefaultLocalFileManager fm) { _fileManager = fm; LogFilePath = Path.Combine(_fileManager.DataPath, "log.txt"); AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) => { LogError($"[EXCEPTION] {eventArgs.Exception}"); }; } public void Log(string text) { Console.WriteLine($"{DateTime.UtcNow} : [SZ LOG] {text}"); if (LogToFile) AppendLogFile($"{DateTime.UtcNow} : [SZ LOG] {text}"); } public void LogError(string text) { Console.WriteLine($"{DateTime.UtcNow} : [SZ ERR] {text}"); if (LogToFile) AppendLogFile($"{DateTime.UtcNow} : [SZ ERR] {text}"); } public void LogWarning(string text) { Console.WriteLine($"{DateTime.UtcNow} : [SZ WARN] {text}"); if (LogToFile) AppendLogFile($"{DateTime.UtcNow} : [SZ WARN] {text}"); } private void AppendLogFile(string text) { // TODO: Make sure log file adheres to LogFileMaxLines File.AppendAllText(LogFilePath, text + "\n"); } }