在我的应用程序中,我有以下日志记录策略/附加程序:
- DebugAppender:如果根级别为 DEBUG,则将每条匹配 DEBUG 的消息写入默认跟踪侦听器输出
- ConsoleAppender:如果应用程序模式(全局上下文属性)是“控制台”,则将 WARN 以上的每条消息写入控制台输出
- EventLogAppender:如果应用程序模式(全局上下文属性)为“服务”,则将 ERRROR 以上的每条消息写入控制台输出
- RollingFileAppender:将 INFO 上方的每条消息写入滚动平面文件
这在整个应用程序中都非常有效,直到第一行我使用该IAppBuilder
界面启动 OWIN Web 主机。一旦我调用WebApp.Start
,我注意到以下行为:
- 调试消息 (ILogger.Debug) 正在写入控制台输出
- 调试消息 (ILogger.Debug) 两次写入 VS 调试输出
经过进一步调查,我发现 OWIN 默默地将一个实例附加System.Diagnostics.DefaultTraceListener
到System.Diagnostics.TextWriterTraceListener
默认跟踪/调试输出,这可能是问题的根源。但是,DefaultTraceListener
明确声明 in app.config 并没有帮助。
有什么办法可以将 OWIN 配置得不那么……偷偷摸摸吗?