// ReSharper disable TemplateIsNotCompileTimeConstantProblem namespace NSExt.Extensions; /// /// LoggerExtensions /// public static class LoggerExtensions { private const string _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER = "{Message} "; private static readonly Action _logDebug = LoggerMessage.Define(LogLevel.Debug, default , _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER); private static readonly Action _logError = LoggerMessage.Define(LogLevel.Error, default , _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER); private static readonly Action _logFatal = LoggerMessage.Define(LogLevel.Critical, default , _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER); private static readonly Action _logInfo = LoggerMessage.Define(LogLevel.Information, default , _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER); private static readonly Action _logWarn = LoggerMessage.Define(LogLevel.Warning, default , _MESSAGE_S_THREADID_CALLERNAME_CALLERFILEPATH_CALLERLINENUMBER); /// /// Debug /// public static void Debug(this ILogger me, object message, [CallerMemberName] string callerName = null , [CallerFilePath] string callerFilePath = null, [CallerLineNumber] int callerLineNumber = 0) { _logDebug(me, message.ToString(), callerName, Path.GetFileName(callerFilePath) , callerLineNumber.ToString(CultureInfo.InvariantCulture), null); } /// /// Error /// public static void Error(this ILogger me, object message, [CallerMemberName] string callerName = null , [CallerFilePath] string callerFilePath = null, [CallerLineNumber] int callerLineNumber = 0) { _logError(me, message.ToString(), callerName, Path.GetFileName(callerFilePath) , callerLineNumber.ToString(CultureInfo.InvariantCulture), null); } /// /// Fatal /// public static void Fatal(this ILogger me, object message, Exception ex = null , [CallerMemberName] string callerName = null, [CallerFilePath] string callerFilePath = null , [CallerLineNumber] int callerLineNumber = 0) { _logFatal(me, message.ToString(), callerName, Path.GetFileName(callerFilePath) , callerLineNumber.ToString(CultureInfo.InvariantCulture), ex); } /// /// Info /// public static void Info(this ILogger me, object message, [CallerMemberName] string callerName = null , [CallerFilePath] string callerFilePath = null, [CallerLineNumber] int callerLineNumber = 0) { _logInfo(me, message.ToString(), callerName, Path.GetFileName(callerFilePath) , callerLineNumber.ToString(CultureInfo.InvariantCulture), null); } /// /// Warn /// public static void Warn(this ILogger me, object message, [CallerMemberName] string callerName = null , [CallerFilePath] string callerFilePath = null, [CallerLineNumber] int callerLineNumber = 0) { _logWarn(me, message.ToString(), callerName, Path.GetFileName(callerFilePath) , callerLineNumber.ToString(CultureInfo.InvariantCulture), null); } }