<root>
<level value="WARN" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
<logger name="testApp.Logging">
<level value="info"/>
<appender-ref ref="LogFileAppender" />
</logger>
在程序中调用的时候
我是写成这样:
log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");
log.Info("info");
在输出日志的时候,名称为testApp.Logging 的LOGGER,就会以它为判断条件,忽律<ROOT>中level value 的等级;
输出结果是日志和控制台;
如果配置中没有LOGGER,就会以<ROOT>中level value 等级判定,程序中调用级别比level value 高的,才触发ROOT下的写日志!!
<logger>
支持的属性:
name |
必须的,logger的名称 |
additivity |
可选,取值是true或false,默认值是true。设置为false时将阻止父logger中的appender。 |
支持的子元素:
appender-ref |
0个或多个,要引用的appender的名字。 |
level |
最多一个。 只有在这个级别或之上的事件才会被记录。 |
param |
0个或多个, 设置一些参数。 |
<additivity value ="false"/>
http://www.cnblogs.com/longshizhong/archive/2009/11/25/1610452.html?switchskin=1#skinlist
<configuration>
<configSections>
<!--log4net节配置-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<!--log4net配置-->
<log4net>
<!--配置到数据库-->
<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender,log4net">
<!--BufferSize为缓冲区大小-->
<bufferSize value="10" />
<!--<param name="BufferSize" value="2" />-->
<!--引用-->
<connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<!--连接字符串-->
<connectionString value="data source=.;initial catalog=Test;integrated security=false;persist security info=True;User ID=sa;Password=;" />
<!--插入语句-->
<commandText value="INSERT INTO WorkLog ([Date],[Thread],[Level],[Logger],[Operator],[Message],[ActionType],[Operand],[IP],[MachineName],[Browser],[Location],[Exception],[State]) VALUES (@log_date, @thread, @log_level, @logger,@operator, @message,@action_type,@operand,@ip,@machineName,@browser,@location,@exception,@state)" />
<!--记录时间-->
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<!--线程号-->
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<!--日志等级-->
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="100" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<!--日志名称-->
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="200" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<!--操作者-->
<parameter>
<parameterName value="@operator" />
<dbType value="Int16" />
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<conversionPattern value="%property{Operator}" />
</layout>
</parameter>
<!--操作对象-->
<parameter>
<parameterName value="@operand" />
<dbType value="String" />
<size value="300" />
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<conversionPattern value="%property{Operand}" />
</layout>
</parameter>
<!--IP-->
<parameter>
<parameterName value="@ip" />
<dbType value="String" />
<size value="20" />
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<conversionPattern value="%property{IP}" />
</layout>
</parameter>
<!--机器名-->
<parameter>
<parameterName value="@machineName" />
<dbType value="String" />
<size value="100" />
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<conversionPattern value="%property{MachineName}" />
</layout>
</parameter>
<!--浏览器-->
<parameter>
<parameterName value="@browser" />
<dbType value="String" />
<size value="50" />
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<conversionPattern value="%property{Browser}" />
</layout>
</parameter>
<!--消息-->
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="3000" />
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<conversionPattern value="%property{Message}" />
</layout>
</parameter>
<!--动作-->
<parameter>
<parameterName value="@action_type" />
<dbType value="Int16" />
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<conversionPattern value="%property{ActionType}" />
</layout>
</parameter>
<!--地址-->
<parameter>
<parameterName value="@location" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%location" />
</layout>
</parameter>
<!--错误-->
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<!--消息-->
<parameter>
<parameterName value="@state" />
<dbType value="String" />
<size value="3000" />
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<conversionPattern value="%message" />
</layout>
</parameter>
</appender>
<appender name="ReflectionLayout" type="log4net.Appender.RollingFileAppender,log4net">
<!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
<param name="File" value="D:/Log/" />
<!--是否追加到文件-->
<param name="AppendToFile" value="true" />
<!--记录日志写入文件时,不锁定文本文件-->
<!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
<!--Unicode编码-->
<!--<Encoding value="UTF-8" />-->
<!--最多产生的日志文件数,value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="10" />
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Composite" />
<!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]-->
<param name="DatePattern" value="yyyy-MM-dd/"ReflectionLayout.log"" />
<!--<param name="DatePattern" value="yyyyMMdd/yyyyMMdd"-TimerServer.log"" />-->
<!--<param name="DatePattern" value="yyyyMMdd/"TimerServer/TimerServer.log"" />-->
<!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
<param name="maximumFileSize" value="500KB" />
<!--记录的格式。-->
<layout type="TGLog.ExpandLayout2.ReflectionLayout,TGLog">
<param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%property{Operator} 操作类型:%property{Action}%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" />
</layout>
</appender>
<appender name="MyLayout" type="log4net.Appender.RollingFileAppender,log4net">
<!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
<param name="File" value="D:/Log/" />
<!--是否追加到文件-->
<param name="AppendToFile" value="true" />
<!--记录日志写入文件时,不锁定文本文件-->
<!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
<!--Unicode编码-->
<!--<Encoding value="UTF-8" />-->
<!--最多产生的日志文件数,value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="-1" />
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Composite" />
<!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]-->
<!--<param name="DatePattern" value="yyyyMMdd/yyyyMMdd"-TimerServer.log"" />-->
<param name="DatePattern" value="yyyy-MM-dd/"MyLayout/MyLayout.log"" />
<!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
<param name="maximumFileSize" value="100KB" />
<!--记录的格式。-->
<layout type="TGLog.ExpandLayout1.MyLayout,TGLog">
<param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%Operator 操作类型:%ActionType%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%Message%n 消息:%message%newline%n%n" />
</layout>
</appender>
<appender name="HashtableLayout" type="log4net.Appender.RollingFileAppender,log4net">
<!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
<param name="File" value="D:/Log/" />
<!--是否追加到文件-->
<param name="AppendToFile" value="true" />
<!--记录日志写入文件时,不锁定文本文件-->
<!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
<!--Unicode编码-->
<Encoding value="UTF-8" />
<!--最多产生的日志文件数,value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="10" />
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Date" />
<!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]-->
<param name="DatePattern" value="yyyy-MM-dd/yyyyMMdd"-HashtableLayout.log"" />
<!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名--><!--
<param name="maximumFileSize" value="1KB" />-->
<!--记录的格式。-->
<layout type="TGLog.ExpandLayout2.HashtableLayout,TGLog">
<param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%property{Operator} 操作类型:%property{Action}%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" />
</layout>
</appender>
<appender name="ExpandILog" type="log4net.Appender.RollingFileAppender,log4net">
<!--日志文件路径,按文件大小方式输出时在这里指定文件名,并且前面的日志按天在文件名后自动添加当天日期形成文件-->
<param name="File" value="D:/Log/" />
<!--是否追加到文件-->
<param name="AppendToFile" value="true" />
<!--记录日志写入文件时,不锁定文本文件-->
<!--<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />-->
<!--Unicode编码-->
<Encoding value="UTF-8" />
<!--最多产生的日志文件数,value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="10" />
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Date" />
<!--按日期产生文件夹,文件名[在日期方式与混合方式下使用]-->
<param name="DatePattern" value="yyyy-MM-dd/yyyyMMdd"-ExpandILog.log"" />
<!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
<!--
<param name="maximumFileSize" value="1KB" />-->
<!--记录的格式。-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%property{Operator} 操作类型:%property{ActionType}%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" />
</layout>
</appender>
<!--使用反射方法同时写两文件和数据库-->
<logger name="ReflectionLayout">
<level value="DEBUG"/>
<appender-ref ref="HashtableLayout"/>
<appender-ref ref="ReflectionLayout"/>
<appender-ref ref="ADONetAppender"/>
</logger>
<!--使用哈希表方法-->
<logger name="HashtableLayout">
<level value="DEBUG"/>
<appender-ref ref="HashtableLayout"/>
<!--<appender-ref ref="ReflectionLayout"/>-->
<!--<appender-ref ref="ADONetAppender"/>-->
</logger>
<!--使用扩展Layout方法1输出-->
<logger name="MyLayout">
<level value="DEBUG"/>
<appender-ref ref="MyLayout"/>
</logger>
<!--使用扩展ILog方法输出-->
<logger name="ExpandILog">
<level value="DEBUG"/>
<appender-ref ref="ExpandILog"/>
</logger>
</log4net>
</configuration>
: