/// <inheritdoc/> public void Configure(LoggerConfiguration logger, JeebsConfig jeebs, string name, LogEventLevel minimum) { var config = jeebs.Services.GetServiceConfig(c => c.Slack, name); _ = logger.WriteTo.Async(a => a.Slack( webhookUrl: config.Webhook, restrictedToMinimumLevel: minimum )); }
public void Key_ReturnsNormalOrJeebsKey(string input, string expected) { // Arrange // Act var result = JeebsConfig.GetKey(input); // Assert Assert.Equal(expected, result); }
/// <inheritdoc/> public void Configure(LoggerConfiguration logger, JeebsConfig jeebs, string name, LogEventLevel minimum) { var config = jeebs.Services.GetServiceConfig(c => c.Seq, name); _ = logger.WriteTo.Async(a => a.Seq( serverUrl: config.Server, apiKey: config.ApiKey, restrictedToMinimumLevel: minimum )); }
/// <inheritdoc/> public void Configure(LoggerConfiguration logger, JeebsConfig jeebs, string name, LogEventLevel minimum) { var config = jeebs.Services.GetServiceConfig(c => c.Console, name); if (config.AddPrefix) { SerilogLogger.ConsoleMessagePrefix = jeebs.App.FullName; } _ = logger.WriteTo.Console( restrictedToMinimumLevel: minimum, outputTemplate: config.Template ?? "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} | {SourceContext}{NewLine}{Exception}" ); }
/// <summary> /// Load Serilog configuration from JeebsConfig object /// </summary> /// <param name="this">LoggerConfiguration</param> /// <param name="jeebs">JeebsConfig</param> /// <exception cref="LoadFromJeebsConfigException"></exception> public static void LoadFromJeebsConfig(this LoggerConfiguration @this, JeebsConfig jeebs) { // Set the application name _ = @this.Enrich.WithProperty(JeebsConfig.Key.ToUpperFirst() + nameof(JeebsConfig.App), jeebs.App.FullName); // Set the minimum log level _ = @this.MinimumLevel.Is(GetMinimum(null, jeebs.Logging.Minimum)); // Set custom minimum levels foreach (var(key, level) in jeebs.Logging.Overrides) { _ = @this.MinimumLevel.Override(key, GetMinimum(level, jeebs.Logging.Minimum)); } // Configure providers ConfigureProviders(ref @this, jeebs); // Enable connectors EnableConnectors(@this, jeebs); }
/// <summary> /// Enable all <see cref="ILoggingConnector"/> services /// </summary> /// <param name="serilog"></param> /// <param name="jeebs"></param> internal static void EnableConnectors(LoggerConfiguration serilog, JeebsConfig jeebs) { // Get all connectors var connectors = new List <ILoggingConnector>(); TypeF.GetTypesImplementing <ILoggingConnector>().ForEach(t => { var i = Activator.CreateInstance(t); if (i is ILoggingConnector h) { connectors.Add(h); } }); // Enable each connector foreach (var connector in connectors) { connector.Enable(serilog, jeebs); } }
/// <summary> /// Configure all enabled <see cref="ILoggingProvider"/> services /// </summary> /// <param name="serilog"></param> /// <param name="jeebs"></param> internal static void ConfigureProviders(ref LoggerConfiguration serilog, JeebsConfig jeebs) { // Get enabled providers var enabledProviders = jeebs.Logging.Providers.Where(h => h.Value.Enabled).ToList(); // If no providers are enabled, add basic console logging and return if (enabledProviders.Count == 0) { _ = serilog.WriteTo.Console(); return; } // Get provider services var providers = new Dictionary <string, ILoggingProvider>(); TypeF.GetTypesImplementing <ILoggingProvider>().ForEach(t => { var i = Activator.CreateInstance(t); if (i is ILoggingProvider h) { providers.Add(h.Type, h); } }); // Configure enabled providers foreach (var(providerInfo, providerConfig) in enabledProviders) { // Get service definition var(serviceType, serviceName) = ServicesConfig.SplitDefinition(providerInfo); // Get hook minimum - default minimum will override this if it's higher var providerMinimum = GetMinimum(providerConfig.Minimum, jeebs.Logging.Minimum); // Configure provider if (providers.TryGetValue(serviceType, out var provider)) { provider.Configure(serilog, jeebs, serviceName, providerMinimum); } } }
/// <inheritdoc/> public void Enable(global::Serilog.LoggerConfiguration serilog, JeebsConfig jeebs) => #if NET6_0 NpgsqlLogManager.Provider = new PostgreSqlLoggingProvider();
/// <inheritdoc/> public void Enable(LoggerConfiguration serilog, JeebsConfig jeebs) => MySqlConnectorLogManager.Provider = new MySqlLoggerProvider();