using System; using System.IO; namespace sharp.logging { public class FileLogger : LoggingBackend, IDisposable { FileStream fileStream; TextWriter writer; public FileLogger(string filename) { openLogFile(filename); } private void openLogFile(string filename) { fileStream = new FileStream(filename, FileMode.Append); 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"); } foreach (String line in lines) { writer.WriteLine(line); writer.Flush(); } } } }