mirror of
https://github.com/Ellpeck/ExtremelySimpleLogger.git
synced 2024-11-21 17:53:28 +01:00
added WriterSink
This commit is contained in:
parent
096bc98a05
commit
cb824c73fc
2 changed files with 45 additions and 2 deletions
|
@ -5,6 +5,7 @@ using System.IO;
|
|||
namespace ExtremelySimpleLogger {
|
||||
/// <summary>
|
||||
/// A <see cref="Sink"/> that writes log output to <see cref="Console.Out"/> or <see cref="Console.Error"/>.
|
||||
/// This class is a variation of the <see cref="WriterSink"/>.
|
||||
/// </summary>
|
||||
public class ConsoleSink : Sink {
|
||||
|
||||
|
@ -17,7 +18,6 @@ namespace ExtremelySimpleLogger {
|
|||
{LogLevel.Error, ConsoleColor.DarkRed},
|
||||
{LogLevel.Fatal, ConsoleColor.DarkRed}
|
||||
};
|
||||
private readonly object locker = new object();
|
||||
private readonly TextWriter console;
|
||||
|
||||
/// <summary>
|
||||
|
@ -63,7 +63,7 @@ namespace ExtremelySimpleLogger {
|
|||
/// <param name="level">The importance level of this message</param>
|
||||
/// <param name="s">The message to log</param>
|
||||
protected override void Log(Logger logger, LogLevel level, string s) {
|
||||
lock (this.locker) {
|
||||
lock (this.console) {
|
||||
var color = this.GetColor(level);
|
||||
if (color.HasValue)
|
||||
Console.ForegroundColor = color.Value;
|
||||
|
|
43
ExtremelySimpleLogger/WriterSink.cs
Normal file
43
ExtremelySimpleLogger/WriterSink.cs
Normal file
|
@ -0,0 +1,43 @@
|
|||
using System.IO;
|
||||
|
||||
namespace ExtremelySimpleLogger {
|
||||
/// <summary>
|
||||
/// A <see cref="Sink"/> that writes log output to an underlying <see cref="TextWriter"/>.
|
||||
/// Note that <see cref="ConsoleSink"/> is a variation of this sink that additionally includes console colors.
|
||||
/// </summary>
|
||||
public class WriterSink : Sink {
|
||||
|
||||
private readonly TextWriter writer;
|
||||
private readonly bool autoClose;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new writer sink with the given settings.
|
||||
/// </summary>
|
||||
/// <param name="writer">The writer to write to.</param>
|
||||
/// <param name="autoClose">Whether the underlying <paramref name="writer"/> should be closed automatically when this sink is disposed in <see cref="Dispose"/>.</param>
|
||||
public WriterSink(TextWriter writer, bool autoClose = false) {
|
||||
this.writer = writer;
|
||||
this.autoClose = autoClose;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Logs the given message, which has already been formatted using <see cref="Sink.Formatter"/> or <see cref="Logger.DefaultFormatter"/>.
|
||||
/// </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>
|
||||
protected override void Log(Logger logger, LogLevel level, string s) {
|
||||
lock (this.writer)
|
||||
this.writer.WriteLine(s);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override void Dispose() {
|
||||
if (this.autoClose) {
|
||||
lock (this.writer)
|
||||
this.writer.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue