ln.logging/FileLogger.cs

74 lines
1.7 KiB
C#
Raw Permalink Normal View History

2018-05-01 20:28:08 +02:00
using System;
using System.IO;
2019-03-11 09:02:19 +01:00
namespace ln.logging
2018-05-01 20:28:08 +02:00
{
2018-10-16 21:07:04 +02:00
public class FileLogger : LoggingBackend, IDisposable
{
FileStream fileStream;
TextWriter writer;
public FileLogger(string filename)
{
openLogFile(filename);
}
private void openLogFile(string filename)
{
2019-03-27 11:32:29 +01:00
if (File.Exists(filename))
{
String oldfn = String.Format("{0}.old", filename);
if (File.Exists(oldfn))
File.Delete(oldfn);
File.Move(filename, oldfn);
}
fileStream = new FileStream(filename, FileMode.Create);
2018-10-16 21:07:04 +02:00
writer = new StreamWriter(fileStream);
}
public void Close()
{
if (writer != null)
{
writer.Close();
fileStream.Close();
}
}
public void Dispose()
{
if (writer != null)
{
writer.Close();
writer.Dispose();
writer = null;
}
if (fileStream != null)
{
fileStream.Close();
fileStream.Dispose();
fileStream = null;
}
}
protected override void MessageReceived(LogLevel logLevel, string[] lines)
{
if (writer == null)
{
throw new ObjectDisposedException("FileLogger has already been disposed");
}
2019-03-26 12:53:31 +01:00
lock (writer)
2018-10-16 21:07:04 +02:00
{
2019-03-26 12:53:31 +01:00
foreach (String line in lines)
{
writer.WriteLine(line);
writer.Flush();
}
2018-10-16 21:07:04 +02:00
}
}
}
2018-05-01 20:28:08 +02:00
}