diff options
Diffstat (limited to 'Ryujinx.Common/Logging/Targets/FileLogTarget.cs')
-rw-r--r-- | Ryujinx.Common/Logging/Targets/FileLogTarget.cs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Ryujinx.Common/Logging/Targets/FileLogTarget.cs b/Ryujinx.Common/Logging/Targets/FileLogTarget.cs index 4db5f7bc..46fffd3a 100644 --- a/Ryujinx.Common/Logging/Targets/FileLogTarget.cs +++ b/Ryujinx.Common/Logging/Targets/FileLogTarget.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Linq; using System.Text; namespace Ryujinx.Common.Logging @@ -20,6 +21,20 @@ namespace Ryujinx.Common.Logging public FileLogTarget(string path, string name, FileShare fileShare, FileMode fileMode) { + // Ensure directory is present + DirectoryInfo logDir = new DirectoryInfo(Path.Combine(path, "Logs")); + logDir.Create(); + + // Clean up old logs, should only keep 3 + FileInfo[] files = logDir.GetFiles("*.log").OrderBy((info => info.CreationTime)).ToArray(); + for (int i = 0; i < files.Length - 2; i++) + { + files[i].Delete(); + } + + // Get path for the current time + path = Path.Combine(logDir.FullName, $"Ryujinx_{DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss")}.log"); + _name = name; _logWriter = new StreamWriter(File.Open(path, fileMode, FileAccess.Write, fileShare)); _formatter = new DefaultLogFormatter(); |