示例#1
0
        public static BrokerRConnectionBuilder WithLogging(
            this BrokerRConnectionBuilder source,
            BrokerRLogLevel level,
            Func <ILogger> logger
            )
        {
            return(source.WithLogging((sender, e) => Log(e.LogLevel, e)));

            void Log(BrokerRLogLevel logLevel, LogArgs e)
            {
                if (logLevel < level)
                {
                    return;
                }

                switch (logLevel)
                {
                case BrokerRLogLevel.Trace:
                    logger().LogTrace(e.Exception, e.Message);
                    break;

                case BrokerRLogLevel.Debug:
                    logger().LogDebug(e.Exception, e.Message);
                    break;

                case BrokerRLogLevel.Information:
                    logger().LogInformation(e.Exception, e.Message);
                    break;

                case BrokerRLogLevel.Warning:
                    logger().LogWarning(e.Exception, e.Message);
                    break;

                case BrokerRLogLevel.Error:
                    logger().LogError(e.Exception, e.Message);
                    break;

                case BrokerRLogLevel.Critical:
                    logger().LogCritical(e.Exception, e.Message);
                    break;

                case BrokerRLogLevel.None:
                    // Don't log
                    break;

                default:
                    logger().LogWarning($"Unknown log level `{logLevel:G}`. Please update `BrokerR.Client.Logging`.");
                    break;
                }
            }
        }
示例#2
0
 public LogArgs(BrokerRLogLevel logLevel, string message)
 {
     Message  = message;
     LogLevel = logLevel;
 }
示例#3
0
 /// <summary>
 /// Configures the underlying <see cref="BrokerRConnection"/> to log messages to an instance of
 /// <see cref="Microsoft.Extensions.Logging.ILogger"/>.
 /// </summary>
 /// <param name="level">The minimum level of logging</param>
 /// <returns>The options</returns>
 public BrokerROptions ConfigureLogging(BrokerRLogLevel level)
 {
     ConnectionBuilder.WithLogging(level, ServiceProvider.GetRequiredService <ILogger <BrokerRConnection> >);
     return(this);
 }