【发布时间】:2015-08-04 09:46:00
【问题描述】:
我正在使用 ASP.NET WebApi 和 NLog。 我想将每个请求的信息(如correlationId)添加到我的日志消息中。在最好的情况下,NLog 的用户应该对此一无所知。 Logger 本身应该能够从 http 请求中获取信息。
使用 Unity,我可以使用“PerRequestLifetimeManager”来注入这些信息,但不建议这样做。我宁愿使用 HttpContext.Items,但我对 System.Web 和 HttpContext 不满意。
是否可以根据请求范围在服务器上设置信息并在每次我想记录某些内容时将它们获取到我的记录器中?
【问题讨论】:
-
如果你依赖于在你的类中调用 NLog 静态方法来创建记录器,那么你必须依赖 NLog API 或者做一些像注入 id 作为依赖的事情。一个更优雅的解决方案是注册一个日志拦截器,该拦截器连接到容器中的对象,并且您的对象忽略所有日志记录。