我有一个adonet appender和滚动文件appender配置为我的应用程序。我想要的是我的adonetappender上的过滤器,通过它我可以省略特定类的登录。该类具有多个级别的devugging,我需要为我的文件appender。所以我无法改变等级,必须省略过滤器。 我的日志配置在下面给出
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" >
<file value="..\\Logs\\Logfile.txt" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd" />
<rollingStyle value="Date" />
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{yyyy-MM-dd HH:mm:ss.fff} %10p %-5property{_App} %-5property{_Node} [%2t] %5c{1}.%M - %m%n" />
</layout>
</appender>
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<immediateFlush value="true" />
<bufferSize value="0" />
<connectionType value="MySql.Data.MySqlClient.MySqlConnection, MySql.Data" />
<connectionString value="data source=localhost;initial catalog=logging_db;User ID=root;Password=" />
<commandText value="INSERT INTO system_log(appname, action, level)
VALUES(@appname, @action,@level);" />
<parameter>
<parameterName value="appname" />
<dbType value="String" />
<size value="32" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="My Web Service" />
</layout>
</parameter>
<parameter>
<parameterName value="action" />
<dbType value="String" />
<size value="150" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%c{1}" />
</layout>
</parameter>
<parameter>
<parameterName value="level" />
<dbType value="String" />
<size value="10" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%p" />
</layout>
</parameter>
<filter type="log4net.Filter.LevelRangeFilter">
<acceptOnMatch value="true" />
<levelMin value="DEBUG" />
<levelMax value="FATAL" />
</filter>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="AdoNetAppender" />
</root>
</log4net>
我的班级名称是MyNameSpace.Business.ConditionCompare 在我的类中,log4net对象被声明为
private static readonly log4net.ILog Logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
答案 0 :(得分:1)
您不在配置中显示文件追加器,但您需要做的是定义一个记录器,它通过指定additivity="false"
来覆盖root中定义的追加器:这允许记录器选择要使用的追加器。正如您所说,您希望完全停止记录到数据库,您可以告诉记录器只使用文件追加器:
修改:在root
元素下添加:
<logger name="MyNameSpace.Business.ConditionCompare" additivity="false">
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</logger>