OWIN interferes with log4net

本文关键字:log4net with interferes OWIN | 更新日期: 2023-09-27 18:16:41

在我的应用程序中,我有以下日志记录策略/追加器:

  • DebugAppender:如果根级别为DEBUG,则将所有与DEBUG匹配的消息写入默认跟踪侦听器输出
  • ConsoleAppender:如果应用程序模式(全局上下文属性)是'console',则将上面的每个消息写入控制台输出
  • EventLogAppender:如果应用程序模式(全局上下文属性)是'service',将error以上的每个消息写入控制台输出
  • RollingFileAppender:将INFO以上的所有消息写入滚动平面文件

这在整个应用程序中工作得非常好,直到我使用IAppBuilder接口启动OWIN web主机的第一行。当我调用WebApp.Start时,我注意到以下行为:

  • 调试消息(ILogger.Debug)正在被写入控制台输出
  • 调试消息(ILogger.Debug)被两次写入VS调试输出

经过进一步调查,我发现OWIN将System.Diagnostics.DefaultTraceListenerSystem.Diagnostics.TextWriterTraceListener的实例静默地附加到默认的跟踪/调试输出中,这可能是问题的根源。然而,在app.config中明确声明DefaultTraceListener并没有帮助。

是否有任何方法我可以配置OWIN更少…偷偷摸摸的?

OWIN interferes with log4net

您可以在启动代码中删除侦听器,例如:

Trace.Listeners.Remove("HostingTraceListener");

(源代码名称)