当前项目自定义的配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="InfoLogAppender" />
<appender-ref ref="WarnLogAppender" />
<appender-ref ref="ErrorLogAppender" />
</root>
<!--普通日志-->
<appender name="InfoLogAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件(按天生成,所以文件名在datePattern节点中)-->
<file value="Logs\" />
<!--是否追加到文件-->
<appendToFile value="true" />
<!--是否静态文件,当按天生成时为false,否则为true,当为true时rollingStyle节点与datePattern节点无效-->
<param name="StaticLogFileName" value="false" />
<!--时间格式-->
<param name="DatePattern" value="yyyyMMdd"_OperationReport.log"" />
<!--日志文件生成方式(根据天生成)-->
<param name="RollingStyle" value="Date" />
<!--设置日志生成的格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%c %p] : %m%n" />
</layout>
<!--设置记录日志的级别-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="Debug" />
<levelMax value="Info" />
</filter>
</appender>
<!--警告日志-->
<appender name="WarnLogAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件(按天生成,所以文件名在datePattern节点中)-->
<file value="Logs\" />
<!--是否追加到文件-->
<appendToFile value="true" />
<!--是否静态文件,当按天生成时为false,否则为true,当为true时rollingStyle节点与datePattern节点无效-->
<param name="StaticLogFileName" value="false" />
<!--时间格式-->
<param name="DatePattern" value="yyyyMMdd"_WarningReport.log"" />
<!--日志文件生成方式(根据天生成)-->
<param name="RollingStyle" value="Date" />
<!--设置日志生成的格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%c %p] : %m%n" />
</layout>
<!--设置记录日志的级别-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="Warn" />
<levelMax value="Warn" />
</filter>
</appender>
<!--错误日志-->
<appender name="ErrorLogAppender" type="log4net.Appender.RollingFileAppender">
<!--日志文件(按天生成,所以文件名在datePattern节点中)-->
<file value="Logs\" />
<!--是否追加到文件-->
<appendToFile value="true" />
<!--是否静态文件,当按天生成时为false,否则为true,当为true时rollingStyle节点与datePattern节点无效-->
<param name="StaticLogFileName" value="false" />
<!--时间格式-->
<param name="DatePattern" value="yyyyMMdd"_ExceptionReport.log"" />
<!--日志文件生成方式(根据天生成)-->
<param name="RollingStyle" value="Date" />
<!--设置日志生成的格式-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%c %p] : %m%n" />
</layout>
<!--设置记录日志的级别-->
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="Error" />
<levelMax value="FATAL" />
</filter>
</appender>
</log4net>
</configuration>
代码解释:
%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
%n(new line):換行
%d(datetime):输出当前语句运行的时刻
%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
%t(thread id):当前语句所在的线程ID
%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等
%c(class):当前日志对象的名称
%L:输出语句所在的行号
%F:输出语句所在的文件名
%-数字:表示该项的最小长度,如果不够,则用空格填充
非常详细的解析及应用,可借鉴:
1、写入当前应用程序相同路径下: http://blog.csdn.net/zhoufoxcn/article/details/2220533
2、写入数据库:http://blog.csdn.net/zhoufoxcn/article/details/6029021