ILRepack/RepackLogger.cs (52 lines of code) (raw):

using System; using System.IO; namespace ILRepacking { internal class RepackLogger : ILogger { private string _outputFile; private StreamWriter _writer; public bool ShouldLogVerbose { get; set; } public void Log(object str) { string logStr = str.ToString(); Console.WriteLine(logStr); _writer?.WriteLine(logStr); } public bool Open(string file) { if (string.IsNullOrEmpty(file)) return false; _outputFile = file; _writer = new StreamWriter(_outputFile); return true; } public void Close() { if (_writer == null) return; _writer.Close(); _writer = null; } public void Error(string msg) { Log($"ERROR: {msg}"); } public void Warn(string msg) { Log($"WARN: {msg}"); } public void Info(string msg) { Log($"INFO: {msg}"); } public void Verbose(string msg) { if (ShouldLogVerbose) Log($"VERBOSE: {msg}"); } public void DuplicateIgnored(string ignoredType, object ignoredObject) { // TODO: put on a list and log a summary //INFO("Ignoring duplicate " + ignoredType + " " + ignoredObject); } } }