2017-03-13 69 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);