c# – Microsoft Owin Logging – Web Api 2 – 如何创建记录器
我正在尝试使用Web Api 2和Owin向我的应用程序添加日志记录,所以我开始使用Microsoft Owin Logging,它需要一个已经实现的ILogger和ILoggerFactory,当我需要在STARTUP方法中记录任何内容时它很有用任何Owin Middleware组件.
例如,当我在启动方法中时,我可以使用以下命令创建记录器: public void Configuration(IAppBuilder app) { // Creates configuration var configuration = new HttpConfiguration(); // Configure WebApi Settings WebApiConfig.Register(configuration); app.SetLoggerFactory(new OwinLog4NetLoggerFactory("Default")); var logger = app.CreateLogger<Startup>(); logger.WriteInformation("test log"); // Enabled WebApi in OWIN app.UseWebApi(configuration); } 其中“OwinLog4NetLoggerFactory”是我的自定义ILoggerFactory实现. 到目前为止,这么好……但是…当我在实际的web api动作方法中时,如何创建记录器?…我尝试访问Request.GetOwinEnvironment()并且记录器工厂不在字典中. 例如: public class AccountController : ApiController { public int Get(int id) { // Create logger here return id + 1; } } 我知道我可以创建一个静态类,引用Logger Factory甚至是注入来将记录器添加到api控制器,但这对于应该存在的东西来说似乎太复杂了. 任何想法,将不胜感激. 解决方法
我建议编写中间件,以便您可以处理控制器外部的日志记录:
public class LoggingMiddleware : OwinMiddleware { public LoggingMiddleware(OwinMiddleware next) : base(next) { } public override async Task Invoke(IOwinContext context) { //handle request logging await Next.Invoke(context); //handle response logging } } 然后在Startup类中: public class Startup { // ReSharper disable once UnusedMember.Global public void Configuration(IAppBuilder appBuilder) { HttpConfiguration config = new HttpConfiguration(); config.MapHttpAttributeRoutes(); appBuilder.Use<LoggingMiddleware>(); appBuilder.UseWebApi(config); } } 然后请求进入,点击LoggingMiddleware中的请求日志代码,点击控制器代码,然后在返回途中将响应记录在LoggingMiddleware上. 但是,如果您只想将对象从中间件发送到控制器,则可以使用context.Set(“loggingObject”,loggingObject);在中间件然后 编辑:修正了} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 关于swift的访问级别
- 如何使CocoaPods项目在OS X El Capitan和Xcode 7 Beta上工作
- ruby-on-rails – Rails – 如何选择表中的最后日期?
- vb.net – 删除Codedom生成的代码中的项目
- 【深入了解cocos2d-x 3.x】UI树(1)——什么是UI树
- 详解vuelidate 对于vueJs2.0的验证解决方案
- dojo 模块之define
- XML解析的三种方式(dom,sax,dom4j)
- ios – Sprite Kit的’didBeginContact’功能不是很准确.我
- ruby-on-rails – Ruby on Rails中的截断和简单格式字符串