Tranga/Logging/FileLogger.cs

32 lines
973 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-09-08 19:28:44 +02:00
DirectoryInfo dir = Directory.CreateDirectory(new FileInfo(logFilePath).DirectoryName!);
2023-05-21 15:33:01 +02:00
//Remove oldest logfile if more than MaxNumberOfLogFiles
2023-09-08 19:28:44 +02:00
for (int fileCount = dir.EnumerateFiles().Count(); fileCount > MaxNumberOfLogFiles - 1; fileCount--) //-1 because we create own logfile later
File.Delete(dir.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
}
}