如何追踪log4net的问题

我一直使用log4net,但是我从来没有想过的一件事是如何知道里面发生了什么。 例如,我的项目中有一个控制台appender和一个数据库appender。 我对数据库和代码进行了一些更改,现在数据库appender不再工作了。 我会弄清楚为什么最终,但是如果我能看到log4net里发生了什么,这将会有很大的帮助。

是否log4net生成任何类型的输出,我可以查看尝试确定我的问题的来源?

首先你必须在应用程序配置文件中设置这个值:

<configuration> <appSettings> <add key="log4net.Internal.Debug" value="true"/> </appSettings> </configuration> 

然后,要确定要在其中保存输出的文件,可以在相同的.config文件中添加以下代码:

 <configuration> ... <system.diagnostics> <trace autoflush="true"> <listeners> <add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\tmp\log4net.txt" /> </listeners> </trace> </system.diagnostics> ... </configuration> 

您可以在“如何启用log4net内部调试?”下找到更详细的说明。 在log4net FAQ页面 。

如果您使用的是log4net配置文件,则还可以通过将顶层节点更改为:

 <log4net debug="true"> 

这将工作一旦配置重新加载,并假设你的跟踪监听器安装正确。

除了上面的答案之外,您可以使用此行实时查看日志,而不是c:\ tmp \ log4net.txt输出。

 log4net.Util.LogLog.InternalDebugging = true; 

例如,在控制台应用程序中,您可以添加该控件,然后实时观看输出。 在一个小测试工具中调试log4net,看看你正在测试的appender正在发生什么。

如果内部日志不能提供足够的信息,则构建和调试源代码非常容易。 如果你不想和开发项目混淆,可以添加一个简单的控制台应用程序, log4net.config记录一条消息,将你的项目的log4net.config复制到这个应用程序,然后调试这个类。