簡體   English   中英

net 6.0 應用程序:嘗試登錄 Azure 時啟動時出現 Serilog 異常 Application Insights

[英]net 6.0 application: Serilog exception on startup when trying to log to Azure Application Insights

我正在嘗試使用 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM