gpt4 book ai didi

c# - 在 .NET Core 6.0 Razor 页面应用程序中配置 Serilog 的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 03:36:14 27 4
gpt4 key购买 nike

我正在尝试配置 Serilog 以与 .NET 6 Razor 页面 Web 应用程序一起使用。我尝试按照 aspnetcore 指示 here和应用见解here 。我尝试的一切似乎都不起作用。我看到我的丰富器受到攻击,但没有任何内容写入应用程序见解。

program.cs 文件如下所示:

using AppInsightsSerilogCustomDimensions;
using Microsoft.ApplicationInsights.Extensibility;
using Serilog;

Log.Logger = new LoggerConfiguration()
.Enrich.With<SystemInfoEnricher>()
.WriteTo.ApplicationInsights(TelemetryConfiguration.Active, TelemetryConverter.Traces)
.CreateBootstrapLogger();

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

builder.Host.UseSerilog((context, services, configuration) => configuration
.ReadFrom.Configuration(context.Configuration)
.ReadFrom.Services(services)
.Enrich.With<SystemInfoEnricher>()
.WriteTo.ApplicationInsights(TelemetryConfiguration.Active, TelemetryConverter.Traces));

// Error: No service for type 'Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration' has been registered.
//builder.Host.UseSerilog((context, services, configuration) => configuration
// .ReadFrom.Configuration(context.Configuration)
// .ReadFrom.Services(services)
// .Enrich.With<SystemInfoEnricher>()
// .WriteTo.ApplicationInsights(services.GetRequiredService<TelemetryConfiguration>(), TelemetryConverter.Traces));


var app = builder.Build();


// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

我已根据 Microsoft docs here 配置了我的 appsettings.json 文件,但也添加了一个 InstrumentationKey 以防万一有帮助。

{
"ApplicationInsights": {
"InstrumentationKey": "--I put the key here--",
"ConnectionString": "---I put a connection string here---"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Information"
}
},
"AllowedHosts": "*"
}

我已经为此苦苦挣扎了 3 个小时,但它就是行不通。我已经能够在应用程序中配置应用程序洞察而不使用 Serilog,并将其记录到 Application Insights 资源,但我无法让它与 Serilog 一起使用。

我怀疑这与未读取仪器 key 有关,因为当我取消注释program.cs中的代码时,我看到错误No service for type 'Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration' .

如有任何帮助,我们将不胜感激。

最佳答案

  • 您的 Instrumentation key 配置不正确。

请引用以下解决方法

  • 确保您安装的以下 Nuget 软件包已更新
Serilog.Settings.Configuration
Serilog.AspNetCore
Serilog.Sinks.ApplicationInsights
Microsoft.ApplicationInsights.AspNetCore

Program.cs

  public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.WriteTo.ApplicationInsights(TelemetryConfiguration.Active, TelemetryConverter.Traces)
);

输出: enter image description here

引用资料取自:

Serilog.AspNetCore

关于c# - 在 .NET Core 6.0 Razor 页面应用程序中配置 Serilog 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73243988/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com