Application Insights不会收集ILogger错误日志。
创始人
2024-09-11 01:30:26
0

在使用Application Insights时,ILogger错误日志是默认情况下不会被Application Insights自动收集的。但是,我们可以通过自定义代码来实现将ILogger错误日志发送到Application Insights。

下面是一个示例代码,演示了如何将ILogger错误日志发送到Application Insights:

  1. 首先,确保你的项目中已经添加了Microsoft.ApplicationInsights.AspNetCore包。

  2. 在Startup.cs文件中,添加以下代码:

using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.ApplicationInsights.AspNetCore.Extensions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddApplicationInsightsTelemetry(Configuration); // 添加Application Insights服务

        // 注册自定义ILogger提供程序
        services.AddSingleton();

        services.AddControllersWithViews();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        // ...

        app.UseDeveloperExceptionPage();

        // ...
    }
}
  1. 创建一个自定义的ILoggerProvider实现,用于将ILogger错误日志发送到Application Insights:
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Extensions.Logging;

public class ApplicationInsightsLoggerProvider : ILoggerProvider
{
    private readonly TelemetryClient _telemetryClient;

    public ApplicationInsightsLoggerProvider(TelemetryConfiguration configuration)
    {
        _telemetryClient = new TelemetryClient(configuration);
    }

    public ILogger CreateLogger(string categoryName)
    {
        return new ApplicationInsightsLogger(_telemetryClient);
    }

    public void Dispose()
    {
        // 执行清理操作(如果需要的话)
    }
}

public class ApplicationInsightsLogger : ILogger
{
    private readonly TelemetryClient _telemetryClient;

    public ApplicationInsightsLogger(TelemetryClient telemetryClient)
    {
        _telemetryClient = telemetryClient;
    }

    public IDisposable BeginScope(TState state)
    {
        return null;
    }

    public bool IsEnabled(LogLevel logLevel)
    {
        return true; // 收集所有日志级别的日志
    }

    public void Log(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func formatter)
    {
        if (exception != null)
        {
            var logEntry = new TraceTelemetry(formatter(state, exception), logLevel.ToSeverityLevel());
            _telemetryClient.TrackTrace(logEntry);
        }
        else
        {
            var logEntry = new TraceTelemetry(formatter(state, exception), logLevel.ToSeverityLevel());
            _telemetryClient.TrackTrace(logEntry);
        }
    }
}

public static class LogLevelExtensions
{
    public static SeverityLevel ToSeverityLevel(this LogLevel logLevel)
    {
        switch (logLevel)
        {
            case LogLevel.Trace:
                return SeverityLevel.Verbose;
            case LogLevel.Debug:
                return SeverityLevel.Verbose;
            case LogLevel.Information:
                return SeverityLevel.Information;
            case LogLevel.Warning:
                return SeverityLevel.Warning;
            case LogLevel.Error:
                return SeverityLevel.Error;
            case LogLevel.Critical:
                return SeverityLevel.Critical;
            default:
                return SeverityLevel.Information;
        }
    }
}

通过以上步骤,Application Insights将会收集并记录ILogger错误日志。在Application Insights的仪表板中,你将能够查看和分析这些错误日志。

相关内容

热门资讯

玩家交流!蜀山挂件辅助,创思维... 玩家交流!蜀山挂件辅助,创思维激k透视插件,详细脚本(有挂方式)运创思维激k透视插件辅助工具,进入游...
一分钟了解!老友麻将辅助器,青... 一分钟了解!老友麻将辅助器,青龙辅助3.0,详细器(有挂解密)1、老友麻将辅助器免费辅助多个强度级别...
一分钟揭秘!先锋脚本辅助,哈局... 一分钟揭秘!先锋脚本辅助,哈局辅助作弊,详细器(了解有挂)暗藏猫腻,小编详细说明先锋脚本辅助破解器有...
如何分辨真伪!丽水茶苑手机辅助... 如何分辨真伪!丽水茶苑手机辅助,蜀山四川小程序破解版,详细方法(竟然有挂)1)蜀山四川小程序破解版免...
推荐一款!UU Games辅助... 推荐一款!UU Games辅助器,江汉晃晃辅助器,详细器(揭秘有挂)亲,关键说明,江汉晃晃辅助器透视...
玩家必看科普!天天微友第三方辅... 玩家必看科普!天天微友第三方辅助软件下载,皮皮辅助器,详细器(了解有挂)1、天天微友第三方辅助软件下...
玩家必看科普!四川途游小程序辅... 玩家必看科普!四川途游小程序辅助,雀神挂件价格骗局,详细方法(有挂教学)1、四川途游小程序辅助公共底...
最新技巧!四川游戏辅助器,小程... 最新技巧!四川游戏辅助器,小程序能开挂吗,详细神器(有挂方式)1、小程序能开挂吗破解器简单,小程序能...
今日重大通报!皮皮游戏辅助平台... 今日重大通报!皮皮游戏辅助平台,火神工作室辅助大全,详细app(真是有挂)1、上手简单,内置详细流程...
一分钟揭秘!五十k辅助,微友辅... 一分钟揭秘!五十k辅助,微友辅助神器下载,详细器(有挂详细)1、微友辅助神器下载有没有辅助教程、微友...