From 78ba02f277531455afefb0ffe7782508cd606e8c Mon Sep 17 00:00:00 2001 From: erri120 Date: Thu, 20 Feb 2020 11:45:38 +0100 Subject: [PATCH 1/2] Added LogsFolder Consts --- Wabbajack.Common/Consts.cs | 3 +++ Wabbajack.Common/Utils.cs | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Wabbajack.Common/Consts.cs b/Wabbajack.Common/Consts.cs index 9db5019d..07fa6143 100644 --- a/Wabbajack.Common/Consts.cs +++ b/Wabbajack.Common/Consts.cs @@ -103,5 +103,8 @@ namespace Wabbajack.Common public static string PatchCacheFolder => Path.Combine(LocalAppDataPath, "patch_cache"); public static int MaxConnectionsPerServer = 4; + + public static string LogsFolder = "logs"; + public static int MaxOldLogs = 50; } } diff --git a/Wabbajack.Common/Utils.cs b/Wabbajack.Common/Utils.cs index 1697529c..50a32334 100644 --- a/Wabbajack.Common/Utils.cs +++ b/Wabbajack.Common/Utils.cs @@ -53,17 +53,17 @@ namespace Wabbajack.Common if (!Directory.Exists(Consts.LocalAppDataPath)) Directory.CreateDirectory(Consts.LocalAppDataPath); - if (!Directory.Exists("logs")) - Directory.CreateDirectory("logs"); + if (!Directory.Exists(Consts.LogsFolder)) + Directory.CreateDirectory(Consts.LogsFolder); var programName = Assembly.GetEntryAssembly()?.Location ?? "Wabbajack"; - LogFile = Path.Combine("logs", Path.GetFileNameWithoutExtension(programName) + ".current.log"); + LogFile = Path.Combine(Consts.LogsFolder, Path.GetFileNameWithoutExtension(programName) + ".current.log"); _startTime = DateTime.Now; if (LogFile.FileExists()) { - var newPath = Path.Combine("logs", Path.GetFileNameWithoutExtension(programName) + (new FileInfo(LogFile)).LastWriteTime.ToString(" yyyy-MM-dd HH_mm_ss") + ".log"); + var newPath = Path.Combine(Consts.LogsFolder, Path.GetFileNameWithoutExtension(programName) + (new FileInfo(LogFile)).LastWriteTime.ToString(" yyyy-MM-dd HH_mm_ss") + ".log"); File.Move(LogFile, newPath, MoveOptions.ReplaceExisting); } From 70de8fae09b5906a631ba44df9dfa13de78433f6 Mon Sep 17 00:00:00 2001 From: erri120 Date: Thu, 20 Feb 2020 12:03:49 +0100 Subject: [PATCH 2/2] Delete old log files on startup --- Wabbajack.Common/Utils.cs | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/Wabbajack.Common/Utils.cs b/Wabbajack.Common/Utils.cs index 50a32334..d55e6923 100644 --- a/Wabbajack.Common/Utils.cs +++ b/Wabbajack.Common/Utils.cs @@ -60,13 +60,45 @@ namespace Wabbajack.Common LogFile = Path.Combine(Consts.LogsFolder, Path.GetFileNameWithoutExtension(programName) + ".current.log"); _startTime = DateTime.Now; - if (LogFile.FileExists()) { - var newPath = Path.Combine(Consts.LogsFolder, Path.GetFileNameWithoutExtension(programName) + (new FileInfo(LogFile)).LastWriteTime.ToString(" yyyy-MM-dd HH_mm_ss") + ".log"); + var newPath = Path.Combine(Consts.LogsFolder, Path.GetFileNameWithoutExtension(programName) + new FileInfo(LogFile).LastWriteTime.ToString(" yyyy-MM-dd HH_mm_ss") + ".log"); File.Move(LogFile, newPath, MoveOptions.ReplaceExisting); } + var logFiles = Directory.GetFiles(Consts.LogsFolder); + if (logFiles.Length >= Consts.MaxOldLogs) + { + Log($"Maximum amount of old logs reached ({logFiles.Length} >= {Consts.MaxOldLogs})"); + var filesToDelete = logFiles + .Where(File.Exists) + .OrderBy(f => + { + var fi = new FileInfo(f); + return fi.LastWriteTime; + }).Take(logFiles.Length - Consts.MaxOldLogs).ToList(); + + Log($"Found {filesToDelete.Count} old log files to delete"); + + var success = 0; + var failed = 0; + filesToDelete.Do(f => + { + try + { + File.Delete(f); + success++; + } + catch (Exception e) + { + failed++; + Log($"Could not delete log at {f}!\n{e}"); + } + }); + + Log($"Deleted {success} log files, failed to delete {failed} logs"); + } + var watcher = new FileSystemWatcher(Consts.LocalAppDataPath); AppLocalEvents = Observable.Merge(Observable.FromEventPattern(h => watcher.Changed += h, h => watcher.Changed -= h).Select(e => (FileEventType.Changed, e.EventArgs)), Observable.FromEventPattern(h => watcher.Created += h, h => watcher.Created -= h).Select(e => (FileEventType.Created, e.EventArgs)),