Ejemplo n.º 1
0
    /// <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
                                     ));
    }
Ejemplo n.º 2
0
    public void Key_ReturnsNormalOrJeebsKey(string input, string expected)
    {
        // Arrange

        // Act
        var result = JeebsConfig.GetKey(input);

        // Assert
        Assert.Equal(expected, result);
    }
Ejemplo n.º 3
0
    /// <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
                                     ));
    }
Ejemplo n.º 4
0
    /// <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);
            }
        }
    }
Ejemplo n.º 8
0
    /// <inheritdoc/>
    public void Enable(global::Serilog.LoggerConfiguration serilog, JeebsConfig jeebs) =>
#if NET6_0
    NpgsqlLogManager.Provider = new PostgreSqlLoggingProvider();
Ejemplo n.º 9
0
 /// <inheritdoc/>
 public void Enable(LoggerConfiguration serilog, JeebsConfig jeebs) =>
 MySqlConnectorLogManager.Provider = new MySqlLoggerProvider();