mirror of
https://github.com/Ellpeck/ExtremelySimpleLogger.git
synced 2024-11-22 10:03:29 +01:00
added console colors to ConsoleSink
This commit is contained in:
parent
b989e6d541
commit
20faaf8dff
5 changed files with 38 additions and 8 deletions
|
@ -6,12 +6,36 @@ namespace ExtremelySimpleLogger {
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ConsoleSink : Sink {
|
public class ConsoleSink : Sink {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="ConsoleColor"/> that this console sink should use when printing messages with the <see cref="LogLevel.Warn"/> log level.
|
||||||
|
/// </summary>
|
||||||
|
public ConsoleColor WarnColor { get; set; } = ConsoleColor.DarkYellow;
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="ConsoleColor"/> that this console sink should use when printing messages with the <see cref="LogLevel.Error"/> and <see cref="LogLevel.Fatal"/> log levels.
|
||||||
|
/// </summary>
|
||||||
|
public ConsoleColor ErrorColor { get; set; } = ConsoleColor.DarkRed;
|
||||||
|
private readonly object locker = new object();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Logs the given message, which has already been formatted using <see cref="Sink.Formatter"/>.
|
/// Logs the given message, which has already been formatted using <see cref="Sink.Formatter"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="logger">The logger that the message was passed to</param>
|
||||||
|
/// <param name="level">The importance level of this message</param>
|
||||||
/// <param name="s">The message to log</param>
|
/// <param name="s">The message to log</param>
|
||||||
public override void Log(string s) {
|
protected override void Log(Logger logger, LogLevel level, string s) {
|
||||||
Console.WriteLine(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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,6 @@
|
||||||
<PackageProjectUrl>https://github.com/Ellpeck/ExtremelySimpleLogger</PackageProjectUrl>
|
<PackageProjectUrl>https://github.com/Ellpeck/ExtremelySimpleLogger</PackageProjectUrl>
|
||||||
<RepositoryUrl>https://github.com/Ellpeck/ExtremelySimpleLogger</RepositoryUrl>
|
<RepositoryUrl>https://github.com/Ellpeck/ExtremelySimpleLogger</RepositoryUrl>
|
||||||
<PackageLicenseUrl>https://github.com/Ellpeck/ExtremelySimpleLogger/blob/master/LICENSE</PackageLicenseUrl>
|
<PackageLicenseUrl>https://github.com/Ellpeck/ExtremelySimpleLogger/blob/master/LICENSE</PackageLicenseUrl>
|
||||||
<VersionPrefix>1.1.0</VersionPrefix>
|
<VersionPrefix>1.2.0</VersionPrefix>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
@ -49,8 +49,10 @@ namespace ExtremelySimpleLogger {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Logs the given message, which has already been formatted using <see cref="Sink.Formatter"/>.
|
/// Logs the given message, which has already been formatted using <see cref="Sink.Formatter"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="logger">The logger that the message was passed to</param>
|
||||||
|
/// <param name="level">The importance level of this message</param>
|
||||||
/// <param name="s">The message to log</param>
|
/// <param name="s">The message to log</param>
|
||||||
public override void Log(string s) {
|
protected override void Log(Logger logger, LogLevel level, string s) {
|
||||||
lock (this.file) {
|
lock (this.file) {
|
||||||
if (this.reopenOnWrite) {
|
if (this.reopenOnWrite) {
|
||||||
using (var w = this.file.AppendText())
|
using (var w = this.file.AppendText())
|
||||||
|
|
|
@ -32,14 +32,16 @@ namespace ExtremelySimpleLogger {
|
||||||
/// <param name="message">The message</param>
|
/// <param name="message">The message</param>
|
||||||
/// <param name="e">An optional exception whose stack trace will be appended to the message</param>
|
/// <param name="e">An optional exception whose stack trace will be appended to the message</param>
|
||||||
public virtual void Log(Logger logger, LogLevel level, object message, Exception e = null) {
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Logs the given message, which has already been formatted using <see cref="Formatter"/>.
|
/// Logs the given message, which has already been formatted using <see cref="Formatter"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="logger">The logger that the message was passed to</param>
|
||||||
|
/// <param name="level">The importance level of this message</param>
|
||||||
/// <param name="s">The message to log</param>
|
/// <param name="s">The message to log</param>
|
||||||
public abstract void Log(string s);
|
protected abstract void Log(Logger logger, LogLevel level, string s);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The default formatter for logging messages.
|
/// The default formatter for logging messages.
|
||||||
|
@ -54,7 +56,7 @@ namespace ExtremelySimpleLogger {
|
||||||
/// <param name="message">The message</param>
|
/// <param name="message">The message</param>
|
||||||
/// <param name="e">An optional exception whose stack trace will be appended to the message</param>
|
/// <param name="e">An optional exception whose stack trace will be appended to the message</param>
|
||||||
/// <returns>A formatted string to log</returns>
|
/// <returns>A formatted string to log</returns>
|
||||||
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();
|
var builder = new StringBuilder();
|
||||||
// date
|
// date
|
||||||
builder.Append($"[{DateTime.Now}] ");
|
builder.Append($"[{DateTime.Now}] ");
|
||||||
|
|
|
@ -22,8 +22,10 @@ namespace ExtremelySimpleLogger {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Logs the given message, which has already been formatted using <see cref="Sink.Formatter"/>.
|
/// Logs the given message, which has already been formatted using <see cref="Sink.Formatter"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="logger">The logger that the message was passed to</param>
|
||||||
|
/// <param name="level">The importance level of this message</param>
|
||||||
/// <param name="s">The message to log</param>
|
/// <param name="s">The message to log</param>
|
||||||
public override void Log(string s) {
|
protected override void Log(Logger logger, LogLevel level, string s) {
|
||||||
lock (this.builder)
|
lock (this.builder)
|
||||||
this.builder.AppendLine(s);
|
this.builder.AppendLine(s);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue