2017-03-13 50 views
2

我试图在Owin管道添加使用LogContext简单的富集Serilog Owin中间件

我的记录器配置

// configure logger 
Log.Logger = new LoggerConfiguration() 
      .Enrich.WithProperty("B", 2) 
      .ReadFrom.AppSettings() 
      .Enrich.FromLogContext() 
      .CreateLogger(); 

app.Use(typeof(LoggerMiddleware)); 

我Owin中间件

public class LoggerMiddleware : OwinMiddleware 
{ 
    public LoggerMiddleware(OwinMiddleware next) : base(next) 
    { 
    } 

    public override async Task Invoke(IOwinContext context) 
    { 
     using (LogContext.PushProperty("A", 1)) 
     { 
      await Next.Invoke(context); 
     } 
    } 
} 

在日志中我可以请参阅酒店B, 2,但不是A, 1

我在做什么错?

回答

1

所以这很明显,这与this issue有关。 解决方法是改变owin流水线的顺序并在认证后放置日志记录中间件

AuthConfig.Configure(app); 
LogConfig.Configure(app); 
WebApiConfig.Configure(app);