Severity checking

This commit is contained in:
Timerix22 2022-11-17 22:07:15 +06:00
parent 63dd4ae25c
commit 0b5ba1a6e7
6 changed files with 50 additions and 8 deletions

View File

@ -5,14 +5,14 @@ namespace DTLib.Logging.DependencyInjection;
public class MyLoggerWrapper<TCaller> : Microsoft.Extensions.Logging.ILogger<TCaller> public class MyLoggerWrapper<TCaller> : Microsoft.Extensions.Logging.ILogger<TCaller>
{ {
private DTLib.Logging.New.ILogger _logger; public DTLib.Logging.New.ILogger Logger;
public MyLoggerWrapper(DTLib.Logging.New.ILogger logger)=> public MyLoggerWrapper(DTLib.Logging.New.ILogger logger)=>
_logger = logger; Logger = logger;
public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter) public void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{ {
string message = formatter(state, exception); string message = formatter(state, exception);
_logger.Log(typeof(TCaller).Name, LogSeverity_FromLogLevel(logLevel), message); Logger.Log(typeof(TCaller).Name, LogSeverity_FromLogLevel(logLevel), message);
} }
private bool _isEnabled=true; private bool _isEnabled=true;

View File

@ -2,8 +2,21 @@ namespace DTLib.Logging.New;
public enum LogSeverity public enum LogSeverity
{ {
Debug=1, Debug,
Info=2, Info,
Warn=4, Warn,
Error=8 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

@ -5,7 +5,12 @@ namespace DTLib.Logging.New;
/// </summary> /// </summary>
public class CompositeLogger : ILogger public class CompositeLogger : ILogger
{ {
public bool DebugLogEnabled { get; set; } = true;
public bool InfoLogEnabled { get; set; } = true;
public bool WarnLogEnabled { get; set; } = true;
public bool ErrorLogenabled { get; set; } = true;
public ILogFormat Format { get; } public ILogFormat Format { get; }
protected ILogger[] _loggers; protected ILogger[] _loggers;
public CompositeLogger(ILogFormat format, params ILogger[] loggers) public CompositeLogger(ILogFormat format, params ILogger[] loggers)
@ -20,6 +25,9 @@ public class CompositeLogger : ILogger
public void Log(string context, LogSeverity severity, object message, ILogFormat format) public void Log(string context, LogSeverity severity, object message, ILogFormat format)
{ {
if(!this.CheckSeverity(severity))
return;
for (int i = 0; i < _loggers.Length; i++) for (int i = 0; i < _loggers.Length; i++)
_loggers[i].Log(context, severity, message, format); _loggers[i].Log(context, severity, message, format);
} }

View File

@ -3,8 +3,13 @@
// вывод лога в консоль и файл // вывод лога в консоль и файл
public class ConsoleLogger : ILogger public class ConsoleLogger : ILogger
{ {
readonly object consolelocker = new(); public bool DebugLogEnabled { get; set; } = true;
public bool InfoLogEnabled { get; set; } = true;
public bool WarnLogEnabled { get; set; } = true;
public bool ErrorLogenabled { get; set; } = true;
public ILogFormat Format { get; } public ILogFormat Format { get; }
readonly object consolelocker = new();
public ConsoleLogger(ILogFormat format) public ConsoleLogger(ILogFormat format)
=> Format = format; => Format = format;
@ -15,6 +20,9 @@ public class ConsoleLogger : ILogger
public void Log(string context, LogSeverity severity, object message, ILogFormat format) public void Log(string context, LogSeverity severity, object message, ILogFormat format)
{ {
if(!this.CheckSeverity(severity))
return;
var msg = format.CreateMessage(context, severity, message); var msg = format.CreateMessage(context, severity, message);
lock (consolelocker) lock (consolelocker)
ColoredConsole.Write(ColorFromSeverity(severity),msg); ColoredConsole.Write(ColorFromSeverity(severity),msg);

View File

@ -2,6 +2,10 @@
public class FileLogger : ILogger public class FileLogger : ILogger
{ {
public bool DebugLogEnabled { get; set; } = true;
public bool InfoLogEnabled { get; set; } = true;
public bool WarnLogEnabled { get; set; } = true;
public bool ErrorLogenabled { get; set; } = true;
public ILogFormat Format { get; } public ILogFormat Format { get; }
public string LogfileName { get; protected set; } public string LogfileName { get; protected set; }
@ -26,6 +30,9 @@ public class FileLogger : ILogger
public void Log(string context, LogSeverity severity, object message, ILogFormat format) public void Log(string context, LogSeverity severity, object message, ILogFormat format)
{ {
if(!this.CheckSeverity(severity))
return;
var msg = format.CreateMessage(context, severity, format).ToBytes(StringConverter.UTF8); var msg = format.CreateMessage(context, severity, format).ToBytes(StringConverter.UTF8);
lock (LogfileStream) lock (LogfileStream)
{ {

View File

@ -4,6 +4,12 @@ public interface ILogger : IDisposable
{ {
ILogFormat Format { get; } ILogFormat Format { get; }
bool DebugLogEnabled { get; set; }
bool InfoLogEnabled { get; set; }
bool WarnLogEnabled { get; set; }
bool ErrorLogenabled { get; set; }
void Log(string context, LogSeverity severity, object message); void Log(string context, LogSeverity severity, object message);
void Log(string context, LogSeverity severity, object message, ILogFormat format); void Log(string context, LogSeverity severity, object message, ILogFormat format);
} }