ConsoleWrapperLogger

This commit is contained in:
Timerix22 2024-01-23 13:55:16 +06:00
parent 245f631ed5
commit 4b33339d3a
9 changed files with 71 additions and 33 deletions

View File

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<!--package info--> <!--package info-->
<PackageId>DTLib.Logging.Microsoft</PackageId> <PackageId>DTLib.Logging.Microsoft</PackageId>
<Version>1.0.0</Version> <Version>1.0.1</Version>
<Authors>Timerix</Authors> <Authors>Timerix</Authors>
<Description>DTLib logger wrapper with dependency injection</Description> <Description>DTLib logger wrapper with dependency injection</Description>
<RepositoryType>GIT</RepositoryType> <RepositoryType>GIT</RepositoryType>
@ -29,6 +29,6 @@
<ProjectReference Include="..\DTLib.Logging\DTLib.Logging.csproj" /> <ProjectReference Include="..\DTLib.Logging\DTLib.Logging.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup Condition=" '$(Configuration)' != 'Debug' "> <ItemGroup Condition=" '$(Configuration)' != 'Debug' ">
<PackageReference Include="DTLib.Logging" Version="1.3.4" /> <PackageReference Include="DTLib.Logging" Version="1.3.5" />
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -2,7 +2,7 @@
<PropertyGroup> <PropertyGroup>
<!--package info--> <!--package info-->
<PackageId>DTLib.Logging</PackageId> <PackageId>DTLib.Logging</PackageId>
<Version>1.3.4</Version> <Version>1.3.5</Version>
<Authors>Timerix</Authors> <Authors>Timerix</Authors>
<Description>Loggers with dependency injection</Description> <Description>Loggers with dependency injection</Description>
<RepositoryType>GIT</RepositoryType> <RepositoryType>GIT</RepositoryType>

View File

@ -28,7 +28,6 @@ public class DefaultLogFormat : ILogFormat
if (sb.Length != 0) if (sb.Length != 0)
sb.Append(": "); sb.Append(": ");
sb.Append(message); sb.Append(message);
sb.Append('\n');
return sb.ToString(); return sb.ToString();
} }
} }

View File

@ -7,16 +7,3 @@ public enum LogSeverity
Warn, Warn,
Error 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")
};
}

View File

@ -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")
};
}

View File

@ -5,12 +5,7 @@ namespace DTLib.Logging;
// вывод лога в консоль и файл // вывод лога в консоль и файл
public class ConsoleLogger : ILogger public class ConsoleLogger : ILogger
{ {
public bool DebugLogEnabled { get; set; } = public bool DebugLogEnabled { get; set; } = false;
#if DEBUG
true;
#else
false;
#endif
public bool InfoLogEnabled { get; set; } = true; public bool InfoLogEnabled { get; set; } = true;
public bool WarnLogEnabled { get; set; } = true; public bool WarnLogEnabled { get; set; } = true;
public bool ErrorLogEnabled { get; set; } = true; public bool ErrorLogEnabled { get; set; } = true;
@ -32,7 +27,7 @@ public class ConsoleLogger : ILogger
var msg = format.CreateMessage(context, severity, message); var msg = format.CreateMessage(context, severity, message);
lock (consolelocker) lock (consolelocker)
ColoredConsole.Write(ColorFromSeverity(severity),msg); ColoredConsole.WriteLine(ColorFromSeverity(severity),msg);
} }
private static ConsoleColor ColorFromSeverity(LogSeverity severity) private static ConsoleColor ColorFromSeverity(LogSeverity severity)

View File

@ -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();
}

View File

@ -2,12 +2,7 @@
public class FileLogger : ILogger public class FileLogger : ILogger
{ {
public bool DebugLogEnabled { get; set; } = public bool DebugLogEnabled { get; set; } = false;
#if DEBUG
true;
#else
false;
#endif
public bool InfoLogEnabled { get; set; } = true; public bool InfoLogEnabled { get; set; } = true;
public bool WarnLogEnabled { get; set; } = true; public bool WarnLogEnabled { get; set; } = true;
public bool ErrorLogEnabled { get; set; } = true; public bool ErrorLogEnabled { get; set; } = true;
@ -41,7 +36,9 @@ public class FileLogger : ILogger
var msg = format.CreateMessage(context, severity, message); var msg = format.CreateMessage(context, severity, message);
lock (LogfileStream) lock (LogfileStream)
{ {
LogfileStream.FluentWrite(msg.ToBytes(StringConverter.UTF8)).Flush(); LogfileStream.FluentWriteString(msg)
.FluentWriteByte('\n'.ToByte())
.Flush();
} }
} }

View File

@ -22,7 +22,7 @@
<PackageReference Include="DTLib" Version="1.3.4" /> <PackageReference Include="DTLib" Version="1.3.4" />
<PackageReference Include="DTLib.Dtsod" Version="1.3.4" /> <PackageReference Include="DTLib.Dtsod" Version="1.3.4" />
<PackageReference Include="DTLib.Network" Version="1.4.0" /> <PackageReference Include="DTLib.Network" Version="1.4.0" />
<PackageReference Include="DTLib.Logging" Version="1.3.4" /> <PackageReference Include="DTLib.Logging" Version="1.3.5" />
</ItemGroup> </ItemGroup>
<!--project files--> <!--project files-->