c# – OWIN干扰log4net

在我的应用程序中,我有以下日志记录策略/ 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)

上一篇:log4net 将日志写入数据库


下一篇:c# – 禁用Active Record的Log4Net日志记录