Application Insights - 全局最低严重性级别过滤器?

Application Insights - Global Minimum Severity Level Filter?

有没有一个地方可以设置日志写入的最低严重性?它也应该适用于通过 TelemetryClient.TraceTelemetry 写入的痕迹!有几个问题只涉及 ILogger...

没有直接的方法。但是您可以使用 telemetry processor 来确定可以记录哪些 SeverityLevel

例如,创建一个实现 ITelemetryProcessor 的 class,如下所示:

public class MyCustomFilter : ITelemetryProcessor
{
    private ITelemetryProcessor Next { get; set; }

    // next will point to the next TelemetryProcessor in the chain.
    public MyCustomFilter(ITelemetryProcessor next)
    {
        this.Next = next;
    }

    public void Process(ITelemetry item)
    {
        TraceTelemetry traceTelemetry = item as TraceTelemetry;

        if (traceTelemetry != null)
        {
            //use this line of code to determine which SeverityLevel should be logged. In this example, only SeverityLevel is warning and up can be logged
            if (traceTelemetry.SeverityLevel < SeverityLevel.Warning) { return; }
        }

        this.Next.Process(item);
    }
}

然后在Startup.cs中注册(对于.net core web app):

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
        services.AddApplicationInsightsTelemetry();

        //register your custom TelemetryProcessor
        services.AddApplicationInsightsTelemetryProcessor<MyCustomFilter>();
    }