WoI*_*IIe 33 c# sentry serilog ilogger .net-6.0
由于最近引入了 Program.cs 启动代码的新结构,该文档让我有点困惑。
在官方提供的Serilog.AspNetCore
示例和示例Serilog.Sentry
中,他们使用.UseSerilog()
了WebHostBuilder
. 我找不到这个方法。
这是我尝试过的:
using Serilog;
var builder = WebApplication.CreateBuilder(args);
// adding services...
builder.Logging.AddSerilog(); // <- is this even necessary?
var app = builder.Build();
app.UseSerilogRequestLogging();
// configure request pipeline
app.Run();
Run Code Online (Sandbox Code Playgroud)
但是如何/在哪里配置接收器,例如调试、控制台、哨兵……?我觉得文档有点过时,或者我只是有点盲目。
Joh*_*ica 43
您需要确保安装了以下软件包:
.UseSerilog
扩展方法。如果你有 Serilog.AspNetCore 包,则不需要显式包含它)然后你需要一个using
:
using Serilog;
Run Code Online (Sandbox Code Playgroud)
.UseSerilog
这应该允许您通过以下方式访问builder.Host
:
using Serilog;
var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog();
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
Run Code Online (Sandbox Code Playgroud)
您可以使用不同的重载来获取托管上下文、服务和配置。从那里您可以配置接收器等:
builder.Host.UseSerilog((hostContext, services, configuration) => {
configuration.WriteTo.Console();
});
Run Code Online (Sandbox Code Playgroud)
小智 10
我使用以下代码片段来解决该问题。我将其添加到 Program.cs
var logger = new LoggerConfiguration()
.ReadFrom.Configuration(builder.Configuration)
.Enrich.FromLogContext()
.CreateLogger();
builder.Logging.ClearProviders();
builder.Logging.AddSerilog(logger);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
68529 次 |
最近记录: |