using System; using System.IO; using System.Text; namespace CommandMessenger { static class Logger { private static readonly Encoding StringEncoder = Encoding.GetEncoding("ISO-8859-1"); // The string encoder private static FileStream _fileStream; static Logger() { LogFileName = null; IsEnabled = true; } static public bool IsEnabled { get; set; } static public bool IsOpen { get; private set; } static public bool DirectFlush { get; set; } /// Gets or sets the log file name. /// The logfile name . static public String LogFileName { get; private set; } static public bool Open() { return Open(LogFileName); } static public bool Open(string logFileName) { if (IsOpen && LogFileName == logFileName) return true; LogFileName = logFileName; if (IsOpen) { try { _fileStream.Close(); } catch (Exception) { } IsOpen = false; } try { _fileStream = new FileStream(logFileName, FileMode.Create, FileAccess.ReadWrite); } catch (Exception) { return false; } IsOpen = true; return true; } static public void Close() { if (!IsOpen) return; try { _fileStream.Close(); } catch (Exception) { } IsOpen = false; } static public void Log(string logString) { if (!IsEnabled || !IsOpen) return; var writeBytes = StringEncoder.GetBytes(logString); _fileStream.Write(writeBytes, 0, writeBytes.Length); if (DirectFlush) _fileStream.Flush(); } static public void LogLine(string logString) { Log(logString + Environment.NewLine); } } }