log4net 在设计上不会引发异常,其基本原理是即使日志记录配置错误,应用程序仍应运行。
独立的 log4net 配置文件应仅包含 log4net 配置部分,因此您的 log4net.config 文件以此开头:
<?xml version="1.0" standalone="yes"?>
<log4net>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="1" /> …
另外,您已经定义了附加程序,但尚未定义记录器,因此您需要将如下内容添加到 log4net.config 中:
<root>
<level value="DEBUG" />
<appender-ref ref="AdoNetAppender" />
</root>
(根记录器是默认记录器,您设置最低日志级别和要使用的附加程序)
如果修复文件后仍然存在问题,请在 log4net.config 文件中将 log4net 设置为调试模式,并将 TraceListener 部分添加到 app.config(或 web.config,具体取决于项目类型):
<log4net debug="true">
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> …
在应用程序配置中:
<system.diagnostics>
<trace autoflush="true">
<listeners>
<add
name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\temp\log4net.txt" />
</listeners>
</trace>
</system.diagnostics>
log4net初始化时,会将调试信息写入指定文件。
请注意,当您使用程序集属性来初始化日志记录时,您可以可能需要在程序启动期间添加 GetLogger 调用 http://logging.apache.org/log4net/release/manual/configuration.html#attributes:
使用属性可以是一种更清晰的方法来定义
应用程序的配置将从中加载。不过还是值得的
注意到属性纯粹是被动的。它们仅供参考。
因此,如果您使用配置属性,则必须调用 log4net
允许它读取属性。一个简单的调用
LogManager.GetLogger 将导致调用程序集上的属性
来读取和处理。因此,必须进行日志记录
在应用程序启动期间尽早调用,并且
当然是在加载和调用任何外部程序集之前.