我创建了一个自定义appender,使用EF将错误记录到数据库。我还有一个RollingFileAppender,我想记录所有内容。这是我的配置部分:
<log4net>
<appender name="RollingFileAppender"
type="log4net.Appender.RollingFileAppender" >
<param name="File" value="c:\logs\log-file.txt" />
<param name="MaximumFileSize" value="1MB" />
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/>
</appender>
<appender name="LogToDBAppender" type="Common.Appender.LogToDBAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="ERROR"/>
</filter>
</appender>
<root level="ALL">
<appender-ref ref="RollingFileAppender" />
<appender-ref ref="LogToDBAppender" />
</root>
</log4net>
这里的问题是以下代码:
logger.Info("Entering LoadAllUsers");
调用LogToDBAppender类,当然它失败了,因为它期待一个异常参数。
感谢任何帮助。
由于
答案 0 :(得分:0)
您需要在DenyAllFilter
LevelMatchFilter
<appender name="LogToDBAppender" type="Common.Appender.LogToDBAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="ERROR"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
第一个过滤器接受所有ERROR消息,第二个过滤器拒绝所有其他消息。如果没有第二个过滤器,其他消息也会被接受。