2
0
Tranga/Logging/FileLogger.cs

31 lines
1010 B
C#
Raw Normal View History

2023-05-20 21:47:54 +02:00
using System.Text;
namespace Logging;
public class FileLogger : LoggerBase
{
internal string logFilePath { get; }
2023-05-21 15:33:01 +02:00
private const int MaxNumberOfLogFiles = 5;
2023-05-20 21:47:54 +02:00
public FileLogger(string logFilePath, Encoding? encoding = null) : base (encoding)
2023-05-20 21:47:54 +02:00
{
this.logFilePath = logFilePath;
2023-05-21 15:33:01 +02:00
//Remove oldest logfile if more than MaxNumberOfLogFiles
string parentFolderPath = Path.GetDirectoryName(logFilePath)!;
for (int fileCount = new DirectoryInfo(parentFolderPath).EnumerateFiles().Count(); fileCount > MaxNumberOfLogFiles - 1; fileCount--) //-1 because we create own logfile later
File.Delete(new DirectoryInfo(parentFolderPath).EnumerateFiles().MinBy(file => file.LastWriteTime)!.FullName);
2023-05-20 21:47:54 +02:00
}
protected override void Write(LogMessage logMessage)
{
try
{
File.AppendAllText(logFilePath, logMessage.formattedMessage);
}
catch (Exception)
{
// ignored
}
2023-05-20 21:47:54 +02:00
}
}