using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; namespace OSGeo.MapGuide.Test.Common { /// /// A simple logger interface /// public interface ITestLogger : IDisposable { void Write(string format, params object[] args); void WriteLine(string format, params object[] args); } /// /// A logger for command line output /// public class TestLoggerConsole : ITestLogger { public void Write(string format, params object[] args) { Console.Write(format, args); } public void WriteLine(string format, params object[] args) { Console.WriteLine(format, args); } public void Dispose() { } } /// /// A logger for file output /// public class TestLoggerFile : ITestLogger { private StreamWriter sw; public TestLoggerFile(string file, bool append) { FileMode mode = FileMode.Append; if (!append) { if (File.Exists(file)) mode = FileMode.Truncate; else mode = FileMode.OpenOrCreate; } var fs = new FileStream(file, mode); sw = new StreamWriter(fs); } public void Write(string format, params object[] args) { sw.Write(format, args); } public void WriteLine(string format, params object[] args) { sw.WriteLine(format, args); } public void Dispose() { sw?.Dispose(); sw = null; } } }