private async Task AssertExpectedLineProtocolString(MetricsDataValueSource dataValueSource, TimeSpan flushInterval, string expected)
        {
            var settings   = new DatadogOptions();
            var serializer = new MetricSnapshotSerializer();
            var fields     = new MetricFields();

            await using var ms = new MemoryStream();
            await using (var packer = new MetricSnapshotDatadogJsonWriter(ms, flushInterval))
            {
                serializer.Serialize(packer, dataValueSource, fields);
            }

            Encoding.UTF8.GetString(ms.ToArray()).Should().Be(expected);
        }
Ejemplo n.º 2
0
        public DefaultDatadogHttpClient(
            HttpClient client,
            DatadogOptions options,
            HttpPolicy httpPolicy)
        {
            if (httpPolicy == null)
            {
                throw new ArgumentNullException(nameof(httpPolicy));
            }

            _client                = client ?? throw new ArgumentNullException(nameof(client));
            _options               = options ?? throw new ArgumentNullException(nameof(options));
            _backOffPeriod         = httpPolicy.BackoffPeriod;
            _failuresBeforeBackoff = httpPolicy.FailuresBeforeBackoff;
            _failureAttempts       = 0;
        }
Ejemplo n.º 3
0
        public static void ConfigureLogging(IConfiguration configuration)
        {
            lock (_lock)
            {
                LoggerConfiguration config = new LoggerConfiguration();

                // load from config if section exists
                if (configuration.GetSection(_sectionName).Exists())
                {
                    config.ReadFrom.Configuration(configuration, _sectionName);
                    // configure datadog
                    DatadogOptions ddOptions = configuration.GetSection(_sectionName).GetSection("DataDog").Get <DatadogOptions>();
                    if (!string.IsNullOrWhiteSpace(ddOptions?.ApiKey))
                    {
                        config.WriteTo.DatadogLogs(
                            ddOptions.ApiKey,
                            source: ".NET",
                            service: ddOptions.ServiceName ?? "WsbcDiscordBot",
                            host: ddOptions.HostName ?? Environment.MachineName,
                            new string[] { },
                            ddOptions.ToDatadogConfiguration(),
                            // no need for debug logs in datadag
                            logLevel: ddOptions.OverrideLogLevel ?? LogEventLevel.Information
                            );
                    }
                }
                // otherwise use defaults
                else
                {
                    config.WriteTo.Console()
                    .MinimumLevel.Is(Debugger.IsAttached ? LogEventLevel.Verbose : LogEventLevel.Information)
                    .Enrich.FromLogContext();
                }


                // create the logger
                Serilog.Log.Logger = config.CreateLogger();

                // enable logging of unhandled exceptions, but only when initializing for the first time
                if (!_initialized)
                {
                    AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
                }

                _initialized = true;
            }
        }
Ejemplo n.º 4
0
        private static void ConfigureSerilog(HostBuilderContext context, LoggerConfiguration config)
        {
            config.ReadFrom.Configuration(context.Configuration);
            DatadogOptions ddOptions = context.Configuration.GetSection("Serilog")?.GetSection("DataDog")?.Get <DatadogOptions>();

            if (ddOptions != null)
            {
                config.WriteTo.DatadogLogs(
                    ddOptions.ApiKey,
                    source: ".NET",
                    service: ddOptions.ServiceName ?? "WolfBots-Size",
                    host: ddOptions.HostName ?? Environment.MachineName,
                    new string[] {
                    $"env:{(ddOptions.EnvironmentName ?? context.HostingEnvironment.EnvironmentName)}",
                    $"assembly:{(ddOptions.AssemblyName ?? context.HostingEnvironment.ApplicationName)}"
                },
                    ddOptions.ToDatadogConfiguration(),
                    // no need for debug logs in datadag
                    logLevel: ddOptions.OverrideLogLevel ?? LogEventLevel.Verbose
                    );
            }
        }
        public static void ConfigureSerilog(HostBuilderContext context, LoggerConfiguration config)
        {
            config.ReadFrom.Configuration(context.Configuration)
            .Enrich.FromLogContext();
            DatadogOptions ddOptions = context.Configuration.GetSection("Serilog")?.GetSection("DataDog")?.Get <DatadogOptions>();

            if (!string.IsNullOrWhiteSpace(ddOptions?.ApiKey))
            {
                config.WriteTo.DatadogLogs(
                    ddOptions.ApiKey,
                    source: ".NET",
                    service: ddOptions.ServiceName ?? "Einherji",
                    host: ddOptions.HostName ?? Environment.MachineName,
                    new string[] {
                    $"env:{(ddOptions.EnvironmentName ?? context.HostingEnvironment.EnvironmentName)}",
                    $"assembly:{(ddOptions.AssemblyName ?? context.HostingEnvironment.ApplicationName)}"
                },
                    ddOptions.ToDatadogConfiguration(),
                    // no need for debug logs in datadag
                    logLevel: ddOptions.OverrideLogLevel ?? LogEventLevel.Information
                    );
            }
        }