diff --git a/AyCode.Core/Loggers/AcLogWriterBase.cs b/AyCode.Core/Loggers/AcLogWriterBase.cs index 7fc60c7..bf224a3 100644 --- a/AyCode.Core/Loggers/AcLogWriterBase.cs +++ b/AyCode.Core/Loggers/AcLogWriterBase.cs @@ -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(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(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(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(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(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class - // => Suggest(text, typeof(TCallerClassType).Name, memberName); - - //public void Error(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); } \ No newline at end of file diff --git a/AyCode.Core/Loggers/AcLoggerBase.cs b/AyCode.Core/Loggers/AcLoggerBase.cs index e5418fd..7527e37 100644 --- a/AyCode.Core/Loggers/AcLoggerBase.cs +++ b/AyCode.Core/Loggers/AcLoggerBase.cs @@ -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("AyCode:Logger:AppType"), AcEnv.AppConfiguration.GetEnum("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(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(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(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(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(string? text, [CallerMemberName] string? memberName = null) where TCallerClassType : class - // => Suggest(text, typeof(TCallerClassType).Name, memberName); - - //public virtual void Error(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); } \ No newline at end of file diff --git a/AyCode.Core/Loggers/IAcLogWriterBase.cs b/AyCode.Core/Loggers/IAcLogWriterBase.cs index 1e31cb0..cacc4cf 100644 --- a/AyCode.Core/Loggers/IAcLogWriterBase.cs +++ b/AyCode.Core/Loggers/IAcLogWriterBase.cs @@ -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(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, [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, [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, [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, [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, [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); } \ No newline at end of file