在我的应用程序中,我有以下日志记录策略/ appenders:
> DebugAppender:如果根级别为DEBUG,则将每个与DEBUG匹配的消息写入默认的跟踪侦听器输出
> ConsoleAppender:如果应用程序模式(全局上下文属性)是’console’,则将WARN上方的每条消息写入控制台输出
> EventLogAppender:如果应用程序模式(全局上下文属性)是’service’,则将ERRROR上方的每条消息写入控制台输出
> RollingFileAppender:将INFO上方的每条消息写入滚动平面文件
这在整个应用程序中都非常有效,直到第一行我使用IAppBuilder接口启动OWIN Web主机.一旦我调用WebApp.Start,我就注意到以下行为:
>调试消息(ILogger.Debug)将被写入控制台输出
>调试消息(ILogger.Debug)将被写入VS调试输出两次
经过进一步调查,我发现OWIN默默地将System.Diagnostics.DefaultTraceListener和System.Diagnostics.TextWriterTraceListener的实例附加到默认的跟踪/调试输出,这可能是问题的根源.但是,在app.config中声明DefaultTraceListener显然没有帮助.
有什么方法可以让OWIN配置得更少……偷偷摸摸?
解决方法:
您可以在启动代码中删除侦听器,例如:
Trace.Listeners.Remove("HostingTraceListener");
(姓名从source code)