forked from MeloNX/MeloNX
* dotnet format style --severity info Some changes were manually reverted. * dotnet format analyzers --serverity info Some changes have been minimally adapted. * Restore a few unused methods and variables * Silence dotnet format IDE0060 warnings * Silence dotnet format IDE0059 warnings * Address or silence dotnet format IDE1006 warnings * Address dotnet format CA1816 warnings * Address or silence dotnet format CA2211 warnings * Silence CA1806 and CA1834 issues * Fix formatting for switch expressions * Address most dotnet format whitespace warnings * Apply dotnet format whitespace formatting A few of them have been manually reverted and the corresponding warning was silenced * Revert formatting changes for while and for-loops * Format if-blocks correctly * Run dotnet format whitespace after rebase * Run dotnet format style after rebase * Run dotnet format analyzers after rebase * Run dotnet format after rebase and remove unused usings - analyzers - style - whitespace * Add comments to disabled warnings * Remove a few unused parameters * Replace MmeShadowScratch with Array256<uint> * Simplify properties and array initialization, Use const when possible, Remove trailing commas * Run dotnet format after rebase * Address IDE0251 warnings * Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas" This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e. * dotnet format whitespace after rebase * First dotnet format pass * Second dotnet format pass * Fix build issues * Fix StructArrayHelpers.cs * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Fix return statements * Fix naming rule violations * Update src/Ryujinx.Common/Utilities/StreamUtils.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Add trailing commas * Address review feedback * Address review feedback * Rename remaining type parameters to TKey and TValue * Fix manual formatting for logging levels * Fix spacing before comments --------- Co-authored-by: Ac_K <Acoustik666@gmail.com>
58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
using Ryujinx.Common.Logging.Formatters;
|
|
using System;
|
|
using System.IO;
|
|
using System.Linq;
|
|
|
|
namespace Ryujinx.Common.Logging.Targets
|
|
{
|
|
public class FileLogTarget : ILogTarget
|
|
{
|
|
private readonly StreamWriter _logWriter;
|
|
private readonly ILogFormatter _formatter;
|
|
private readonly string _name;
|
|
|
|
string ILogTarget.Name { get => _name; }
|
|
|
|
public FileLogTarget(string path, string name)
|
|
: this(path, name, FileShare.Read, FileMode.Append)
|
|
{ }
|
|
|
|
public FileLogTarget(string path, string name, FileShare fileShare, FileMode fileMode)
|
|
{
|
|
// Ensure directory is present
|
|
DirectoryInfo logDir = new(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();
|
|
}
|
|
|
|
string version = ReleaseInformation.GetVersion();
|
|
|
|
// Get path for the current time
|
|
path = Path.Combine(logDir.FullName, $"Ryujinx_{version}_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}.log");
|
|
|
|
_name = name;
|
|
_logWriter = new StreamWriter(File.Open(path, fileMode, FileAccess.Write, fileShare));
|
|
_formatter = new DefaultLogFormatter();
|
|
}
|
|
|
|
public void Log(object sender, LogEventArgs args)
|
|
{
|
|
_logWriter.WriteLine(_formatter.Format(args));
|
|
_logWriter.Flush();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
GC.SuppressFinalize(this);
|
|
_logWriter.WriteLine("---- End of Log ----");
|
|
_logWriter.Flush();
|
|
_logWriter.Dispose();
|
|
}
|
|
}
|
|
}
|