diff --git a/ExtremelySimpleLogger/ConsoleSink.cs b/ExtremelySimpleLogger/ConsoleSink.cs index 4b9753f..35d5e3e 100644 --- a/ExtremelySimpleLogger/ConsoleSink.cs +++ b/ExtremelySimpleLogger/ConsoleSink.cs @@ -6,12 +6,36 @@ namespace ExtremelySimpleLogger { /// public class ConsoleSink : Sink { + /// + /// The that this console sink should use when printing messages with the log level. + /// + public ConsoleColor WarnColor { get; set; } = ConsoleColor.DarkYellow; + /// + /// The that this console sink should use when printing messages with the and log levels. + /// + public ConsoleColor ErrorColor { get; set; } = ConsoleColor.DarkRed; + private readonly object locker = new object(); + /// /// Logs the given message, which has already been formatted using . /// + /// The logger that the message was passed to + /// The importance level of this message /// The message to log - public override void Log(string s) { - Console.WriteLine(s); + protected override void Log(Logger logger, LogLevel level, string s) { + lock (this.locker) { + switch (level) { + case LogLevel.Warn: + Console.ForegroundColor = this.WarnColor; + break; + case LogLevel.Error: + case LogLevel.Fatal: + Console.ForegroundColor = this.ErrorColor; + break; + } + Console.WriteLine(s); + Console.ResetColor(); + } } } diff --git a/ExtremelySimpleLogger/ExtremelySimpleLogger.csproj b/ExtremelySimpleLogger/ExtremelySimpleLogger.csproj index a88bf26..ca38e3b 100644 --- a/ExtremelySimpleLogger/ExtremelySimpleLogger.csproj +++ b/ExtremelySimpleLogger/ExtremelySimpleLogger.csproj @@ -12,6 +12,6 @@ https://github.com/Ellpeck/ExtremelySimpleLogger https://github.com/Ellpeck/ExtremelySimpleLogger https://github.com/Ellpeck/ExtremelySimpleLogger/blob/master/LICENSE - 1.1.0 + 1.2.0 diff --git a/ExtremelySimpleLogger/FileSink.cs b/ExtremelySimpleLogger/FileSink.cs index 46f9085..f96dc62 100644 --- a/ExtremelySimpleLogger/FileSink.cs +++ b/ExtremelySimpleLogger/FileSink.cs @@ -49,8 +49,10 @@ namespace ExtremelySimpleLogger { /// /// Logs the given message, which has already been formatted using . /// + /// The logger that the message was passed to + /// The importance level of this message /// The message to log - public override void Log(string s) { + protected override void Log(Logger logger, LogLevel level, string s) { lock (this.file) { if (this.reopenOnWrite) { using (var w = this.file.AppendText()) diff --git a/ExtremelySimpleLogger/Sink.cs b/ExtremelySimpleLogger/Sink.cs index 9e853ad..494a7fe 100644 --- a/ExtremelySimpleLogger/Sink.cs +++ b/ExtremelySimpleLogger/Sink.cs @@ -32,14 +32,16 @@ namespace ExtremelySimpleLogger { /// The message /// An optional exception whose stack trace will be appended to the message public virtual void Log(Logger logger, LogLevel level, object message, Exception e = null) { - this.Log(this.Formatter.Invoke(logger, level, message, e)); + this.Log(logger, level, this.Formatter.Invoke(logger, level, message, e)); } /// /// Logs the given message, which has already been formatted using . /// + /// The logger that the message was passed to + /// The importance level of this message /// The message to log - public abstract void Log(string s); + protected abstract void Log(Logger logger, LogLevel level, string s); /// /// The default formatter for logging messages. @@ -54,7 +56,7 @@ namespace ExtremelySimpleLogger { /// The message /// An optional exception whose stack trace will be appended to the message /// A formatted string to log - public virtual string FormatDefault(Logger logger, LogLevel level, object message, Exception e = null) { + protected virtual string FormatDefault(Logger logger, LogLevel level, object message, Exception e = null) { var builder = new StringBuilder(); // date builder.Append($"[{DateTime.Now}] "); diff --git a/ExtremelySimpleLogger/StringSink.cs b/ExtremelySimpleLogger/StringSink.cs index 3587824..00e2a41 100644 --- a/ExtremelySimpleLogger/StringSink.cs +++ b/ExtremelySimpleLogger/StringSink.cs @@ -22,8 +22,10 @@ namespace ExtremelySimpleLogger { /// /// Logs the given message, which has already been formatted using . /// + /// The logger that the message was passed to + /// The importance level of this message /// The message to log - public override void Log(string s) { + protected override void Log(Logger logger, LogLevel level, string s) { lock (this.builder) this.builder.AppendLine(s); }