gpt4 book ai didi

c# - 在 ASP.NET 4.6 中使用 Serilog 启动 OWIN

转载 作者:行者123 更新时间:2023-12-02 00:27:04 25 4
gpt4 key购买 nike

我正在尝试集成 serilog 来全局处理异常,但是当我尝试将 ILoggerFactory 作为新参数添加到 Configuration() 时,应用程序不会加载,因为它无法再识别 OWIN Startup.cs。谁能告诉我我是否错过了什么?下面是我的 Startup.cs:

using Microsoft.Extensions.Logging;
using Microsoft.Owin;
using Owin;
using Serilog;

[assembly: OwinStartupAttribute(typeof(InvoiceAutomation.WebUI.Startup))]
namespace InvoiceAutomation.WebUI
{
public partial class Startup
{
public Startup()
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.LiterateConsole()
.WriteTo.RollingFile("log-{Date}.txt")
.CreateLogger();
}
public void Configuration(IAppBuilder app, ILoggerFactory loggerFactory)
{
ConfigureAuth(app);
loggerFactory.AddSerilog();
}
}
}

最佳答案

它不会加载,因为它需要带有签名的方法

public void Configuration(IAppBuilder app)

但你不需要使用loggerFactory.AddSerilog();现在,创建记录器( Log.Logger = new LoggerConfiguration() )就足够了。

我想出的中间件的全局异常处理怎么样:

public class OwinExceptionHandlerMiddleware : OwinMiddleware
{
private readonly ILogger logger;

public OwinExceptionHandlerMiddleware(OwinMiddleware next, ILogger logger)
: base(next)
{
this.logger = logger;
}

public override async Task Invoke(IOwinContext context)
{
try
{
await this.Next.Invoke(context);
}
catch (Exception ex)
{
this.logger.Error(ex, $"{nameof(OwinExceptionHandlerMiddleware)} caught exception.");
throw;
}
}
}

注意,您需要在 Startup.cs 中注册中间件:

appBuilder.Use<OwinExceptionHandlerMiddleware>(Log.Logger);

关于c# - 在 ASP.NET 4.6 中使用 Serilog 启动 OWIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45076495/

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