Implement ConditionalLog to Logger

This commit is contained in:
jozsef.b@aycode.com 2024-05-19 13:17:13 +02:00
parent 322ad49b9a
commit 96b3383504
3 changed files with 92 additions and 39 deletions

View File

@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using AyCode.Core.Consts;
using AyCode.Core.Enums;
@ -39,53 +40,75 @@ public abstract class AcLogWriterBase : IAcLogWriterBase
public void Detail(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Detail, text, memberName, categoryName ?? CategoryName);
//public void Detail<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Detail(text, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void DetailConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Detail(text, memberName, categoryName);
public void Debug(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Debug, text, memberName, categoryName ?? CategoryName);
//public void Debug<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Debug(text, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void DebugConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Debug(text, memberName, categoryName);
public void Info(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Info, text, memberName, categoryName ?? CategoryName);
//public void Info<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Info(text, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void InfoConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Info(text, memberName, categoryName);
public void Warning(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Warning, text, memberName, categoryName ?? CategoryName);
//public void Warning<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Warning(text, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void WarningConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Warning(text, memberName, categoryName);
public void Suggest(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Suggest, text, memberName, categoryName ?? CategoryName);
//public void Suggest<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Suggest(text, typeof(TCallerClassType).Name, memberName);
//public void Error<TCallerClassType>(string? text, Exception? ex = null, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Error(text, ex, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void SuggestConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Suggest(text, memberName, categoryName);
public void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Error, text, memberName, categoryName ?? CategoryName, ex);
[Conditional("DEBUG")]
public void ErrorConditional(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Error(text, ex, categoryName, memberName);
public void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, null, null);
[Conditional("DEBUG")]
public void WriteConditional(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, null, null);
public void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, Exception? ex)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, ex?.GetType().Name, ex?.ToString());
[Conditional("DEBUG")]
public void WriteConditional(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, Exception? ex)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, ex);
public virtual void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, string? errorType, string? exMessage)
{
throw new NotImplementedException();
}
[Conditional("DEBUG")]
public void WriteConditional(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, string? errorType, string? exMessage)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, errorType, exMessage);
public virtual void Write(IAcLogItemClient logItem)
{
throw new NotImplementedException();
}
[Conditional("DEBUG")]
public void WriteConditional(IAcLogItemClient logItem) => Write(logItem);
}

View File

@ -1,4 +1,5 @@
using System.Runtime.CompilerServices;
using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Security.AccessControl;
using AyCode.Core.Consts;
using AyCode.Core.Enums;
@ -16,7 +17,8 @@ public abstract class AcLoggerBase : IAcLoggerBase
public string? CategoryName { get; set; }
protected AcLoggerBase() : this(null)
{ }
{
}
protected AcLoggerBase(string? categoryName)
{
@ -34,9 +36,10 @@ public abstract class AcLoggerBase : IAcLoggerBase
}
}
protected AcLoggerBase(string? categoryName, params IAcLogWriterBase[] logWriters) :
protected AcLoggerBase(string? categoryName, params IAcLogWriterBase[] logWriters) :
this(AcEnv.AppConfiguration.GetEnum<AppType>("AyCode:Logger:AppType"), AcEnv.AppConfiguration.GetEnum<LogLevel>("AyCode:Logger:LogLevel"), categoryName, logWriters)
{ }
{
}
protected AcLoggerBase(AppType appType, LogLevel logLevel, string? categoryName, params IAcLogWriterBase[] logWriters)
{
@ -57,62 +60,84 @@ public abstract class AcLoggerBase : IAcLoggerBase
if (LogLevel <= LogLevel.Detail) LogWriters.ForEach(x => x.Detail(text, categoryName ?? CategoryName, memberName));
}
//public virtual void Detail<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Detail(text, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void DetailConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Detail(text, memberName, categoryName);
public virtual void Debug(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
{
if (LogLevel <= LogLevel.Debug) LogWriters.ForEach(x => x.Debug(text, categoryName ?? CategoryName, memberName));
}
//public virtual void Debug<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Debug(text, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void DebugConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Debug(text, memberName, categoryName);
public virtual void Info(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
{
if (LogLevel <= LogLevel.Info) LogWriters.ForEach(x => x.Info(text, categoryName ?? CategoryName, memberName));
}
//public virtual void Info<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Info(text, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void InfoConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Info(text, memberName, categoryName);
public virtual void Warning(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
{
if (LogLevel <= LogLevel.Warning) LogWriters.ForEach(x => x.Warning(text, categoryName ?? CategoryName, memberName));
}
//public virtual void Warning<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Warning(text, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void WarningConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Warning(text, memberName, categoryName);
public virtual void Suggest(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
{
if (LogLevel <= LogLevel.Suggest) LogWriters.ForEach(x => x.Suggest(text, categoryName ?? CategoryName, memberName));
}
//public virtual void Suggest<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Suggest(text, typeof(TCallerClassType).Name, memberName);
//public virtual void Error<TCallerClassType>(string? text, Exception? ex = null, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Error(text, ex, typeof(TCallerClassType).Name, memberName);
[Conditional("DEBUG")]
public void SuggestConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Suggest(text, memberName, categoryName);
public virtual void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null)
{
if (LogLevel <= LogLevel.Error) LogWriters.ForEach(x => x.Error(text, ex, categoryName ?? CategoryName, memberName));
}
[Conditional("DEBUG")]
public void ErrorConditional(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Error(text, ex, categoryName, memberName);
public void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, null, null);
[Conditional("DEBUG")]
public void WriteConditional(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, null, null);
public void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, Exception? ex)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, ex?.GetType().Name, ex?.ToString());
[Conditional("DEBUG")]
public void WriteConditional(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, Exception? ex)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, ex);
public virtual void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, string? errorType, string? exMessage)
{
if (LogLevel <= logLevel) LogWriters.ForEach(x => x.Write(appType, logLevel, logText, callerMemberName, categoryName ?? CategoryName, errorType, exMessage));
}
[Conditional("DEBUG")]
public void WriteConditional(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, string? errorType, string? exMessage)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, errorType, exMessage);
public void Write(IAcLogItemClient logItem)
{
if (LogLevel <= logItem.LogLevel) LogWriters.ForEach(x => x.Write(logItem));
}
[Conditional("DEBUG")]
public void WriteConditional(IAcLogItemClient logItem) => Write(logItem);
}

View File

@ -1,4 +1,5 @@
using AyCode.Core.Enums;
using System.Diagnostics;
using AyCode.Core.Enums;
using System.Runtime.CompilerServices;
namespace AyCode.Core.Loggers;
@ -8,26 +9,30 @@ public interface IAcLogWriterBase
public string? CategoryName { get; }
public void Detail(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
//public void Detail<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
//public void DetailConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
public void Debug(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
//public void Debug<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
//public void DebugConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
public void Info(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
//public void Info<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
//public void InfoConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
public void Warning(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
//public void Warning<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
//public void WarningConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
public void Suggest(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
//public void Suggest<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
//public void SuggestConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null);
public void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null);
//public void Error<TCallerClassType>(string? text, Exception? ex = null, [CallerMemberName] string? memberName = null) where TCallerClassType : class;
//public void ErrorConditional(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null);
public void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName);
//public void WriteConditional(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName);
public void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, Exception? ex);
//public void WriteConditional(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, Exception? ex);
public void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, string? errorType, string? exMessage);
//public void WriteConditional(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, string? errorType, string? exMessage);
public void Write(IAcLogItemClient logItem);
//public void WriteConditional(IAcLogItemClient logItem);
}