C# 如何从App.Mertics禁用所有跟踪日志

C# 如何从App.Mertics禁用所有跟踪日志,c#,.net-core,metrics,C#,.net Core,Metrics,我正在尝试向我的web应用程序(.net core 3.1)添加度量。一切正常,但我面临一个事实,即度量向我的记录器中发送一些跟踪信息: App Metrics经常向日志发送垃圾邮件,以至于我每2-3小时就会收到约100兆字节的无用日志。不幸的是,我没有找到任何关于内部日志的信息 我唯一得到的是:我禁用了报告功能。它减少了日志的数量,但仍然有很多日志(对我来说,所有日志都不包含任何有用的信息) program.cs: public static void Main(string[] a

我正在尝试向我的web应用程序(.net core 3.1)添加度量。一切正常,但我面临一个事实,即度量向我的记录器中发送一些跟踪信息:

App Metrics经常向日志发送垃圾邮件,以至于我每2-3小时就会收到约100兆字节的无用日志。不幸的是,我没有找到任何关于内部日志的信息 我唯一得到的是:我禁用了报告功能。它减少了日志的数量,但仍然有很多日志(对我来说,所有日志都不包含任何有用的信息)

program.cs:

    public static void Main(string[] args)
    {
        Metrics = AppMetrics.CreateDefaultBuilder().Configuration
            .Configure(options => options.ReportingEnabled = false)
            .OutputMetrics.AsPrometheusPlainText()
            .Build();

        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args)
    {
        var builder = Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());

        builder = builder.ConfigureMetrics(Metrics)
            .ConfigureAppMetricsHostingConfiguration(options => options.MetricsTextEndpoint = "/metrics")
            .UseMetrics(options =>
            {
                options.EndpointOptions = endpointsOptions =>
                {
                    endpointsOptions.MetricsTextEndpointOutputFormatter = Metrics.OutputMetricsFormatters
                        .OfType<MetricsPrometheusTextOutputFormatter>().First();
                };
            })
            .UseMetricsEndpoints(options => options.MetricsEndpointEnabled = false);

        return builder;
    }
publicstaticvoidmain(字符串[]args)
{
Metrics=AppMetrics.CreateDefaultBuilder().Configuration
.Configure(选项=>options.ReportingEnabled=false)
.OutputMetrics.AsPrometheusPlainText()
.Build();
CreateHostBuilder(args.Build().Run();
}
公共静态IHostBuilder CreateHostBuilder(字符串[]args)
{
var builder=Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>webBuilder.UseStartup());
builder=builder.ConfigureMetrics(度量)
.ConfigureAppMetricHostingConfiguration(选项=>options.MetricsTextEndpoint=“/metrics”)
.UseMetrics(选项=>
{
options.EndpointOptions=endpointsOptions=>
{
endpointsOptions.MetricsTextEndpointOutputFormatter=度量值.OutputMetricsFormatters
.OfType().First();
};
})
.UseMetricsEndpoints(选项=>options.MetricsEndpointEnabled=false);
返回生成器;
}

我是否可以禁用App Metrics中的所有日志(或者至少禁用所有跟踪信息)?

无法禁用App.Mertics中的内部/跟踪日志。我只能在Nlog配置中禁用跟踪日志:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  /// ....
  <rules>
    <logger name="App.Metrics.*" minLevel="Info" />
  </rules>
</nlog>

/// ....
您可以试试

App.Metrics.Logging.LogProvider.IsDisabled = true;
它在Serilog的3.0.0版中适用于我:

"Serilog": {
"Using": [],
"MinimumLevel": {
  "Default": "Verbose",
  "Override": {
    "App.Metrics": "Warning"
  }
} }