c# - OWIN 干扰 log4net

标签 c# debugging log4net owin tracesource

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

  • DebugAppender:如果根级别是DEBUG,将匹配DEBUG的每条消息写入默认跟踪监听器输出
  • ConsoleAppender:如果应用程序模式(全局上下文属性)为“console”,则将 WARN 上方的每条消息写入控制台输出
  • EventLogAppender:如果应用程序模式(全局上下文属性)为“服务”,则将 ERRROR 以上的每条消息写入控制台输出
  • RollingFileAppender:将 INFO 之上的每条消息写入滚动平面文件

这在整个应用程序中运行良好,直到第一行我使用 IAppBuilder 界面启动 OWIN 网络主机。我一调用 WebApp.Start,就注意到以下行为:

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

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

有什么方法可以将 OWIN 配置得不那么...偷偷摸摸吗?

最佳答案

可以在启动代码中去掉监听,eg:

Trace.Listeners.Remove("HostingTraceListener");

(来自 source code 的名称)

关于c# - OWIN 干扰 log4net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25155980/

相关文章:

c# - 第二个玩家运动输入滞后

C#比较相似的字符串

c# - 如何在单个 EXE 中嵌入多语言 *.resx(或 *.resources)文件?

java - 确定的交点不起作用

c++ - Windbg 设置依赖于调用堆栈的条件断点

c# - 为asp.net MVC3项目配置log4net

c# - 用十六进制代码更改表单的背景颜色

Release模式下的 C# 互斥量与 Debug模式下的行为不同

log4net - 配置 Log4net 以写入多个文件

c# - 如何防止 Log4Net 截断异常?