public static IDisposable LogScoped <T>(this ILogger <T> logger, Func <string> messageFactory, [CallerMemberName] string caller = "")
        {
            if (!logger.IsEnabled(LogLevel.Trace))
            {
                return(DefaultDisposable.Instance);
            }
            var writer = new MicrosoftExtensionsLoggingLogMessageWriter <T>(logger);

            return(new AutoTrace(writer, messageFactory, caller));
        }
        public static void LogTrace <T>(this ILogger <T> logger, Func <string> messageFactory, Exception ex, [CallerMemberName] string caller = "")
        {
            var writer = new MicrosoftExtensionsLoggingLogMessageWriter <T>(logger);

            writer.WriteLogEntry(Bluehands.Diagnostics.LogExtensions.LogLevel.Trace, messageFactory, caller, ex);
        }