From 8add6b467d29226f550da8ef95d45551fad3a76c Mon Sep 17 00:00:00 2001 From: Serraniel Date: Wed, 12 Apr 2017 17:12:35 +0200 Subject: [PATCH] Outsourced default format string for logging into the LogFormatter --- SweetLib/Utils/Logger/Logger.cs | 1 + .../Utils/Logger/Memory/ArchivableConsoleLogMemory.cs | 3 ++- SweetLib/Utils/Logger/Memory/ILogMemory.cs | 2 ++ SweetLib/Utils/Logger/Message/LogMessage.cs | 4 +++- SweetLib/Utils/Logger/Message/LogMessageFormatter.cs | 8 +++++++- 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/SweetLib/Utils/Logger/Logger.cs b/SweetLib/Utils/Logger/Logger.cs index 2d0820c..6705ced 100644 --- a/SweetLib/Utils/Logger/Logger.cs +++ b/SweetLib/Utils/Logger/Logger.cs @@ -18,6 +18,7 @@ namespace SweetLib.Utils.Logger public static class Logger { public static LogLevel GlobalLogLevel { get; set; } = LogLevel.Info | LogLevel.Warn | LogLevel.Error; + public static ILogMemory DefaultLogMemory = new ArchivableConsoleLogMemory(); public static void Log(LogLevel logLevel, string message) diff --git a/SweetLib/Utils/Logger/Memory/ArchivableConsoleLogMemory.cs b/SweetLib/Utils/Logger/Memory/ArchivableConsoleLogMemory.cs index aeb0e79..3453bee 100644 --- a/SweetLib/Utils/Logger/Memory/ArchivableConsoleLogMemory.cs +++ b/SweetLib/Utils/Logger/Memory/ArchivableConsoleLogMemory.cs @@ -13,11 +13,12 @@ namespace SweetLib.Utils.Logger.Memory { private string TempFile { get; } = Path.GetTempFileName(); - private Timer QueueTimer; + private Timer QueueTimer { get; } private ConcurrentQueue LogQueue { get; } = new ConcurrentQueue(); public string ArchiveFile { get; set; } = null; + public bool AutoArchiveOnDispose { get; set; } = true; public ArchivableConsoleLogMemory() : this(null) { } diff --git a/SweetLib/Utils/Logger/Memory/ILogMemory.cs b/SweetLib/Utils/Logger/Memory/ILogMemory.cs index 79af4b9..96aef66 100644 --- a/SweetLib/Utils/Logger/Memory/ILogMemory.cs +++ b/SweetLib/Utils/Logger/Memory/ILogMemory.cs @@ -5,7 +5,9 @@ namespace SweetLib.Utils.Logger.Memory public interface ILogMemory { void Remember(LogMessage message); + void Forget(LogMessage message); + void Archive(string fullFileName); } } diff --git a/SweetLib/Utils/Logger/Message/LogMessage.cs b/SweetLib/Utils/Logger/Message/LogMessage.cs index f948d51..7c840e6 100644 --- a/SweetLib/Utils/Logger/Message/LogMessage.cs +++ b/SweetLib/Utils/Logger/Message/LogMessage.cs @@ -6,7 +6,9 @@ namespace SweetLib.Utils.Logger.Message public class LogMessage : IFormattable { public LogLevel LogLevel { get; } + public string Message { get; } + public DateTime LogDateTime { get; } public LogMessage(LogLevel logLevel, string message) : this(logLevel, message, DateTime.Now) { } @@ -26,7 +28,7 @@ namespace SweetLib.Utils.Logger.Message public override string ToString() { - return ToString($"[{CultureInfo.CurrentCulture.DateTimeFormat}] (LL) - V", CultureInfo.CurrentCulture); + return ToString(LogMessageFormatter.DefaultFormatString, CultureInfo.CurrentCulture); } public string ToString(string format, IFormatProvider formatProvider) diff --git a/SweetLib/Utils/Logger/Message/LogMessageFormatter.cs b/SweetLib/Utils/Logger/Message/LogMessageFormatter.cs index 98c66e6..44be3b6 100644 --- a/SweetLib/Utils/Logger/Message/LogMessageFormatter.cs +++ b/SweetLib/Utils/Logger/Message/LogMessageFormatter.cs @@ -1,13 +1,19 @@ using System; +using System.Globalization; namespace SweetLib.Utils.Logger.Message { public class LogMessageFormatter : ICustomFormatter { + private LogMessageFormatter() { } - private static LogMessageFormatter FormatterInstance { get; set; } + private static object Locker { get; } = new object(); + public static LogMessageFormatter FormatterInstance { get; set; } + + public static string DefaultFormatString { get; set; } = $"[{CultureInfo.CurrentCulture.DateTimeFormat}] (LL) - V"; + public static LogMessageFormatter Instance { get