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.Consts;
using AyCode.Core.Enums; 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) public void Detail(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Detail, text, memberName, categoryName ?? CategoryName); => Write(AppType, LogLevel.Detail, text, memberName, categoryName ?? CategoryName);
//public void Detail<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class [Conditional("DEBUG")]
// => Detail(text, typeof(TCallerClassType).Name, memberName); 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) public void Debug(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Debug, text, memberName, categoryName ?? CategoryName); => Write(AppType, LogLevel.Debug, text, memberName, categoryName ?? CategoryName);
//public void Debug<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class [Conditional("DEBUG")]
// => Debug(text, typeof(TCallerClassType).Name, memberName); 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) public void Info(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Info, text, memberName, categoryName ?? CategoryName); => Write(AppType, LogLevel.Info, text, memberName, categoryName ?? CategoryName);
//public void Info<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class [Conditional("DEBUG")]
// => Info(text, typeof(TCallerClassType).Name, memberName); 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) public void Warning(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Warning, text, memberName, categoryName ?? CategoryName); => Write(AppType, LogLevel.Warning, text, memberName, categoryName ?? CategoryName);
//public void Warning<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class [Conditional("DEBUG")]
// => Warning(text, typeof(TCallerClassType).Name, memberName); 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) public void Suggest(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Suggest, text, memberName, categoryName ?? CategoryName); => Write(AppType, LogLevel.Suggest, text, memberName, categoryName ?? CategoryName);
//public void Suggest<TCallerClassType>(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class [Conditional("DEBUG")]
// => Suggest(text, typeof(TCallerClassType).Name, memberName); public void SuggestConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Suggest(text, memberName, categoryName);
//public void Error<TCallerClassType>(string? text, Exception? ex = null, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Error(text, ex, typeof(TCallerClassType).Name, memberName);
public void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null) public void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Write(AppType, LogLevel.Error, text, memberName, categoryName ?? CategoryName, ex); => 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) public void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, null, null); => 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) 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()); => 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) public virtual void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName, string? errorType, string? exMessage)
{ {
throw new NotImplementedException(); 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) public virtual void Write(IAcLogItemClient logItem)
{ {
throw new NotImplementedException(); 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 System.Security.AccessControl;
using AyCode.Core.Consts; using AyCode.Core.Consts;
using AyCode.Core.Enums; using AyCode.Core.Enums;
@ -16,7 +17,8 @@ public abstract class AcLoggerBase : IAcLoggerBase
public string? CategoryName { get; set; } public string? CategoryName { get; set; }
protected AcLoggerBase() : this(null) protected AcLoggerBase() : this(null)
{ } {
}
protected AcLoggerBase(string? categoryName) 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) 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) 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)); 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 [Conditional("DEBUG")]
// => Detail(text, typeof(TCallerClassType).Name, memberName); 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) 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)); 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 [Conditional("DEBUG")]
// => Debug(text, typeof(TCallerClassType).Name, memberName); 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) 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)); 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 [Conditional("DEBUG")]
// => Info(text, typeof(TCallerClassType).Name, memberName); 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) 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)); 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 [Conditional("DEBUG")]
// => Warning(text, typeof(TCallerClassType).Name, memberName); 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) 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)); 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 [Conditional("DEBUG")]
// => Suggest(text, typeof(TCallerClassType).Name, memberName); public void SuggestConditional(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null)
=> Suggest(text, memberName, categoryName);
//public virtual void Error<TCallerClassType>(string? text, Exception? ex = null, [CallerMemberName] string? memberName = null) where TCallerClassType : class
// => Error(text, ex, typeof(TCallerClassType).Name, memberName);
public virtual void Error(string? text, Exception? ex = null, string? categoryName = null, [CallerMemberName] string? memberName = null) 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)); 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) public void Write(AppType appType, LogLevel logLevel, string? logText, string? callerMemberName, string? categoryName)
=> Write(appType, logLevel, logText, callerMemberName, categoryName, null, null); => 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) 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()); => 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) 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)); 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) public void Write(IAcLogItemClient logItem)
{ {
if (LogLevel <= logItem.LogLevel) LogWriters.ForEach(x => x.Write(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; using System.Runtime.CompilerServices;
namespace AyCode.Core.Loggers; namespace AyCode.Core.Loggers;
@ -8,26 +9,30 @@ public interface IAcLogWriterBase
public string? CategoryName { get; } public string? CategoryName { get; }
public void Detail(string? text, string? categoryName = null, [CallerMemberName] string? memberName = null); 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(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(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(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(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(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 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 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 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 Write(IAcLogItemClient logItem);
//public void WriteConditional(IAcLogItemClient logItem);
} }