c# - NET 6.0应用程序: Serilog exception on startup when trying to log to Azure Application Insights

标签 c# azure-application-insights serilog

我尝试使用 Serilog 从 dotnet 6.0 控制台应用程序记录到控制台和 Azure 应用程序见解。我正在从 appsettings.json 文件加载配置。

但是,在启动时,我遇到了异常:

An unhandled exception of type 'System.InvalidOperationException' occurred in Serilog.Settings.Configuration.dll: 'Type Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights was not found.'
   at Serilog.Settings.Configuration.StringArgumentValue.ConvertTo(Type toType, ResolutionContext resolutionContext)
   at Serilog.Settings.Configuration.ConfigurationReader.<>c__DisplayClass21_2.<CallConfigurationMethods>b__3(<>f__AnonymousType9`2 <>h__TransparentIdentifier0)
   at System.Linq.Utilities.<>c__DisplayClass2_0`3.<CombineSelectors>b__0(TSource x)
   at System.Linq.Enumerable.SelectListPartitionIterator`2.ToList()
   at Serilog.Settings.Configuration.ConfigurationReader.CallConfigurationMethods(ILookup`2 methods, IList`1 configurationMethods, Object receiver)
   at Serilog.Settings.Configuration.ConfigurationReader.Configure(LoggerConfiguration loggerConfiguration)
   at Serilog.Configuration.LoggerSettingsConfiguration.Settings(ILoggerSettings settings)

我从 Serilog 网站和其他地方的各种示例中选取了代码。谁能看出我的代码有什么问题吗?

我这里有一个示例程序,可以构建和演示遇到的问题:

https://github.com/ossentoo/testlogger

程序.cs

// See https://aka.ms/new-console-template for more information
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Serilog;

IServiceProvider _serviceProvider;
ILogger<Program> _logger;


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

var config = InitConfiguration();

IConfiguration InitConfiguration()
{
    var configuration = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json")
        .Build();
    
    Log.Logger = new LoggerConfiguration()
        .ReadFrom.Configuration(configuration)
        .CreateLogger();

    var services = new ServiceCollection();

    services.AddLogging(configure => configure.AddSerilog())
            .AddTransient<Program>();

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

    _serviceProvider = services.BuildServiceProvider();

    _logger = _serviceProvider.GetService<ILogger<Program>>();
    _logger.LogInformation("Logger initialized!");

    var loggerFactory = _serviceProvider.GetService<ILoggerFactory>();
    _logger = loggerFactory.CreateLogger<Program>();
    return configuration;
}

appsettings.json

https://raw.githubusercontent.com/ossentoo/testlogger/main/appsettings.json

请随意 fork 代码并发出更改和拉取请求。

谢谢

最佳答案

结果 Serilog telemetryConverter 的 appsettings.json 文件类型名称已更改为:

Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights

Serilog.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights

关于c# - NET 6.0应用程序: Serilog exception on startup when trying to log to Azure Application Insights,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73347233/

相关文章:

C#:如何在检查相等性时评估一个对象的多个计算机类?

C#解码 "â„¢"到 "TM"

c# - 为什么 channel "Debug"和 "Analytic"不适用于我的 ETW-EventSource 实现?

uwp - Application Insights 发送事件需要时间

entity-framework - Azure应用程序见解不显示SQL命令文本

asp.net-core - Serilog 中是否有一个选项可以在运行时更改日志文件参数,就像更改 LogLevel 一样?

c# - 在 .NET/C# 中解析 "multipart/form-data"

azure - WebAPI 应用程序的应用程序洞察

Serilog JSON 配置 LoggingLevelSwitch 访问

asp.net - 如何使用身份验证通过 NLog 或 SeriLog 登录到 Elastic Search