You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 6.0控制台应用启动时Serilog对接Azure Application Insights抛异常

解决Serilog集成Azure Application Insights时的类型找不到异常

问题根源

异常提示找不到Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter类型,核心原因是配置文件中TelemetryConverter的命名空间路径错误,存在重复的Sinks.ApplicationInsights段;同时需确认项目已正确安装相关依赖包。

解决方案

1. 修正appsettings.json中的TelemetryConverter配置

打开appsettings.json,定位到Serilog的Application Insights接收器配置,将TelemetryConverter的类型路径修改为正确格式:

"TelemetryConverter": "Serilog.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"

(原配置多嵌套了一层Sinks.ApplicationInsights,导致类型查找失败)

2. 确认安装必要的NuGet包

确保项目已安装以下兼容版本的NuGet包:

  • Serilog
  • Serilog.Sinks.Console
  • Serilog.Sinks.ApplicationInsights
  • Serilog.Settings.Configuration
  • Microsoft.Extensions.Configuration.Json
  • Microsoft.Extensions.DependencyInjection
  • Microsoft.Extensions.Logging

可通过Package Manager Console执行安装命令:

Install-Package Serilog
Install-Package Serilog.Sinks.Console
Install-Package Serilog.Sinks.ApplicationInsights
Install-Package Serilog.Settings.Configuration
Install-Package Microsoft.Extensions.Configuration.Json
Install-Package Microsoft.Extensions.DependencyInjection
Install-Package Microsoft.Extensions.Logging

3. 优化Program.cs代码(可选)

针对.NET 6控制台应用的顶级语句特性,可简化代码并优化日志初始化流程:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Serilog;

Console.WriteLine("Hello, World!");

// 加载配置文件
var configuration = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();

// 初始化Serilog日志实例
Log.Logger = new LoggerConfiguration()
    .ReadFrom.Configuration(configuration)
    .CreateLogger();

try
{
    // 构建依赖注入容器
    var services = new ServiceCollection();
    services.AddLogging(configure => configure.AddSerilog())
            .AddTransient<Program>();

    services.Configure<LoggerFilterOptions>(options => options.MinLevel = LogLevel.Debug);

    var serviceProvider = services.BuildServiceProvider();
    var logger = serviceProvider.GetRequiredService<ILogger<Program>>();
    logger.LogInformation("Logger initialized!");
}
catch (Exception ex)
{
    Log.Fatal(ex, "Application terminated unexpectedly");
}
finally
{
    Log.CloseAndFlush();
}

// 用于承载泛型日志的临时类
public class Program { }

验证

修改完成后重新运行项目,类型找不到的异常会消失,日志将同时输出到控制台和Azure Application Insights。

内容的提问来源于stack exchange,提问作者ossentoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 10:45:28