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; } } }
public LogArgs(BrokerRLogLevel logLevel, string message) { Message = message; LogLevel = logLevel; }
/// <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); }