From 4b33339d3ad7ec7068e40dd265791e9d1a91380c Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Tue, 23 Jan 2024 13:55:16 +0600 Subject: [PATCH] ConsoleWrapperLogger --- .../DTLib.Logging.Microsoft.csproj | 4 +- DTLib.Logging/DTLib.Logging.csproj | 2 +- DTLib.Logging/LogFormats/DefaultLogFormat.cs | 1 - DTLib.Logging/LogSeverity.cs | 13 ------ DTLib.Logging/LogSeverityHelper.cs | 14 ++++++ DTLib.Logging/Loggers/ConsoleLogger.cs | 9 +--- DTLib.Logging/Loggers/ConsoleWrapperLogger.cs | 46 +++++++++++++++++++ DTLib.Logging/Loggers/FileLogger.cs | 13 ++---- DTLib.Tests/DTLib.Tests.csproj | 2 +- 9 files changed, 71 insertions(+), 33 deletions(-) create mode 100644 DTLib.Logging/LogSeverityHelper.cs create mode 100644 DTLib.Logging/Loggers/ConsoleWrapperLogger.cs diff --git a/DTLib.Logging.Microsoft/DTLib.Logging.Microsoft.csproj b/DTLib.Logging.Microsoft/DTLib.Logging.Microsoft.csproj index 8b19557..4a04390 100644 --- a/DTLib.Logging.Microsoft/DTLib.Logging.Microsoft.csproj +++ b/DTLib.Logging.Microsoft/DTLib.Logging.Microsoft.csproj @@ -2,7 +2,7 @@ DTLib.Logging.Microsoft - 1.0.0 + 1.0.1 Timerix DTLib logger wrapper with dependency injection GIT @@ -29,6 +29,6 @@ - + diff --git a/DTLib.Logging/DTLib.Logging.csproj b/DTLib.Logging/DTLib.Logging.csproj index 86460c0..f53188e 100644 --- a/DTLib.Logging/DTLib.Logging.csproj +++ b/DTLib.Logging/DTLib.Logging.csproj @@ -2,7 +2,7 @@ DTLib.Logging - 1.3.4 + 1.3.5 Timerix Loggers with dependency injection GIT diff --git a/DTLib.Logging/LogFormats/DefaultLogFormat.cs b/DTLib.Logging/LogFormats/DefaultLogFormat.cs index 0807df0..ec3d5b5 100644 --- a/DTLib.Logging/LogFormats/DefaultLogFormat.cs +++ b/DTLib.Logging/LogFormats/DefaultLogFormat.cs @@ -28,7 +28,6 @@ public class DefaultLogFormat : ILogFormat if (sb.Length != 0) sb.Append(": "); sb.Append(message); - sb.Append('\n'); return sb.ToString(); } } \ No newline at end of file diff --git a/DTLib.Logging/LogSeverity.cs b/DTLib.Logging/LogSeverity.cs index fecffb5..2a46527 100644 --- a/DTLib.Logging/LogSeverity.cs +++ b/DTLib.Logging/LogSeverity.cs @@ -6,17 +6,4 @@ public enum LogSeverity Info, Warn, Error -} - -internal static class LogSeverityHelper -{ - public static bool CheckSeverity(this ILogger logger, LogSeverity severity) - => severity switch - { - LogSeverity.Debug => logger.DebugLogEnabled, - LogSeverity.Info => logger.InfoLogEnabled, - LogSeverity.Warn => logger.WarnLogEnabled, - LogSeverity.Error => logger.ErrorLogEnabled, - _ => throw new ArgumentOutOfRangeException(nameof(severity), severity, "unknown severity") - }; } \ No newline at end of file diff --git a/DTLib.Logging/LogSeverityHelper.cs b/DTLib.Logging/LogSeverityHelper.cs new file mode 100644 index 0000000..3c53ac0 --- /dev/null +++ b/DTLib.Logging/LogSeverityHelper.cs @@ -0,0 +1,14 @@ +namespace DTLib.Logging; + +public static class LogSeverityHelper +{ + public static bool CheckSeverity(this ILogger logger, LogSeverity severity) + => severity switch + { + LogSeverity.Debug => logger.DebugLogEnabled, + LogSeverity.Info => logger.InfoLogEnabled, + LogSeverity.Warn => logger.WarnLogEnabled, + LogSeverity.Error => logger.ErrorLogEnabled, + _ => throw new ArgumentOutOfRangeException(nameof(severity), severity, "unknown severity") + }; +} \ No newline at end of file diff --git a/DTLib.Logging/Loggers/ConsoleLogger.cs b/DTLib.Logging/Loggers/ConsoleLogger.cs index 949f505..231435b 100644 --- a/DTLib.Logging/Loggers/ConsoleLogger.cs +++ b/DTLib.Logging/Loggers/ConsoleLogger.cs @@ -5,12 +5,7 @@ namespace DTLib.Logging; // вывод лога в консоль и файл public class ConsoleLogger : ILogger { - public bool DebugLogEnabled { get; set; } = -#if DEBUG - true; -#else - false; -#endif + public bool DebugLogEnabled { get; set; } = false; public bool InfoLogEnabled { get; set; } = true; public bool WarnLogEnabled { get; set; } = true; public bool ErrorLogEnabled { get; set; } = true; @@ -32,7 +27,7 @@ public class ConsoleLogger : ILogger var msg = format.CreateMessage(context, severity, message); lock (consolelocker) - ColoredConsole.Write(ColorFromSeverity(severity),msg); + ColoredConsole.WriteLine(ColorFromSeverity(severity),msg); } private static ConsoleColor ColorFromSeverity(LogSeverity severity) diff --git a/DTLib.Logging/Loggers/ConsoleWrapperLogger.cs b/DTLib.Logging/Loggers/ConsoleWrapperLogger.cs new file mode 100644 index 0000000..9b4f699 --- /dev/null +++ b/DTLib.Logging/Loggers/ConsoleWrapperLogger.cs @@ -0,0 +1,46 @@ +using DTLib.Logging; + +namespace launcher_client; + +public interface IConsoleWrapper : IDisposable +{ + public void WriteLine(string msg); +} + +public class ConsoleWrapperLogger : ILogger +{ + public bool DebugLogEnabled { get; set; } = false; + public bool InfoLogEnabled { get; set; } = true; + public bool WarnLogEnabled { get; set; } = true; + public bool ErrorLogEnabled { get; set; } = true; + public ILogFormat Format { get; set; } + + private readonly IConsoleWrapper _consoleWrapper; + + public ConsoleWrapperLogger(IConsoleWrapper consoleWrapper, ILogFormat format) + { + _consoleWrapper = consoleWrapper; + Format = format; + } + + public ConsoleWrapperLogger(IConsoleWrapper consoleWrapper) + : this(consoleWrapper, new DefaultLogFormat()) + {} + + public void Log(string context, LogSeverity severity, object message, ILogFormat format) + { + if(!this.CheckSeverity(severity)) + return; + + var msg = format.CreateMessage(context, severity, message); + lock (_consoleWrapper) + _consoleWrapper.WriteLine(msg); + } + + public void Dispose() + { + _consoleWrapper.Dispose(); + } + + ~ConsoleWrapperLogger() => Dispose(); +} \ No newline at end of file diff --git a/DTLib.Logging/Loggers/FileLogger.cs b/DTLib.Logging/Loggers/FileLogger.cs index 7208363..e4c9b82 100644 --- a/DTLib.Logging/Loggers/FileLogger.cs +++ b/DTLib.Logging/Loggers/FileLogger.cs @@ -2,12 +2,7 @@ public class FileLogger : ILogger { - public bool DebugLogEnabled { get; set; } = -#if DEBUG - true; -#else - false; -#endif + public bool DebugLogEnabled { get; set; } = false; public bool InfoLogEnabled { get; set; } = true; public bool WarnLogEnabled { get; set; } = true; public bool ErrorLogEnabled { get; set; } = true; @@ -41,13 +36,15 @@ public class FileLogger : ILogger var msg = format.CreateMessage(context, severity, message); lock (LogfileStream) { - LogfileStream.FluentWrite(msg.ToBytes(StringConverter.UTF8)).Flush(); + LogfileStream.FluentWriteString(msg) + .FluentWriteByte('\n'.ToByte()) + .Flush(); } } public virtual void Dispose() { - try + try { LogfileStream?.Flush(); LogfileStream?.Dispose(); diff --git a/DTLib.Tests/DTLib.Tests.csproj b/DTLib.Tests/DTLib.Tests.csproj index fa956dd..d61f83a 100644 --- a/DTLib.Tests/DTLib.Tests.csproj +++ b/DTLib.Tests/DTLib.Tests.csproj @@ -22,7 +22,7 @@ - +