加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在ASP.NET 4.6中使用Serilog进行OWIN启动

发布时间:2020-12-15 22:45:41 所属栏目:百科 来源:网络整理
导读:我正在尝试集成serilog以进行异常的全局处理,但是当我尝试将ILoggerFactory作为新参数添加到Configuration()时,应用程序无法加载,因为它无法识别OWIN Startup.cs.任何人都可以告诉我是否遗漏了什么?下面是我的Startup.cs: using Microsoft.Extensions.Logg
我正在尝试集成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();再创建logger(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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读