配置效果图:
配置代码:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <log4net> 3 <!-- Debug 将日志以回滚文件的形式写到文件中 --> 4 <appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender" > 5 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 6 <file value="App_Data\" /> 7 <!-- 日志文件的命名规则 --> 8 <datePattern value="yyyy-MM-dd/'Debug.log'"/> 9 <!-- 将日志信息追加到已有的日志文件中--> 10 <appendToFile value="true" /> 11 <rollingStyle value="Size" /> 12 <maxSizeRollBackups value="100" /> 13 <maximumFileSize value="1MB" /> 14 <!-- 指定按日期切分日志文件 --> 15 <rollingStyle value="Date"/> 16 <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 17 <staticLogFileName value="false" /> 18 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 19 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 20 <layout type="log4net.Layout.PatternLayout"> 21 <conversionPattern value="%newline%newline【日志时间】: %d 【线程ID】: %thread %newline【日志级别】: %-5p %newline【日志对象】:%logger %newline【日志内容】:%m %newline" /> 22 </layout> 23 <filter type="log4net.Filter.LevelRangeFilter"> 24 <param name="LevelMin" value="Debug" /> 25 <param name="LevelMax" value="Debug" /> 26 </filter> 27 </appender> 28 29 <!-- Info 将日志以回滚文件的形式写到文件中 --> 30 <appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender" > 31 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 32 <file value="App_Data\" /> 33 <!-- 日志文件的命名规则 --> 34 <datePattern value="yyyy-MM-dd/'Info.log'"/> 35 <!-- 将日志信息追加到已有的日志文件中--> 36 <appendToFile value="true" /> 37 <rollingStyle value="Size" /> 38 <maxSizeRollBackups value="100" /> 39 <maximumFileSize value="1MB" /> 40 <!-- 指定按日期切分日志文件 --> 41 <rollingStyle value="Date"/> 42 <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 43 <staticLogFileName value="false" /> 44 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 45 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 46 <layout type="log4net.Layout.PatternLayout"> 47 <conversionPattern value="%newline%newline【日志时间】:%d 【线程ID】:%thread %newline【日志级别】:%-5p %newline【日志对象】:%logger %newline【日志内容】:%m %newline" /> 48 </layout> 49 <filter type="log4net.Filter.LevelRangeFilter"> 50 <param name="LevelMin" value="Info" /> 51 <param name="LevelMax" value="Info" /> 52 </filter> 53 </appender> 54 55 <!-- WARN 将日志以回滚文件的形式写到文件中 --> 56 <appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender" > 57 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 58 <file value="App_Data\" /> 59 <!-- 日志文件的命名规则 --> 60 <datePattern value="yyyy-MM-dd/'Warn.log'"/> 61 <!-- 将日志信息追加到已有的日志文件中--> 62 <appendToFile value="true" /> 63 <rollingStyle value="Size" /> 64 <maxSizeRollBackups value="100" /> 65 <maximumFileSize value="1MB" /> 66 <!-- 指定按日期切分日志文件 --> 67 <rollingStyle value="Date"/> 68 <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 69 <staticLogFileName value="false" /> 70 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 71 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 72 <layout type="log4net.Layout.PatternLayout"> 73 <conversionPattern value="%newline%newline【日志时间】:%d 【线程ID】:%thread %newline【日志级别】:%-5p %newline【日志对象】:%logger %newline【日志内容】:%m %newline" /> 74 </layout> 75 <filter type="log4net.Filter.LevelRangeFilter"> 76 <param name="LevelMin" value="Warn" /> 77 <param name="LevelMax" value="Warn" /> 78 </filter> 79 </appender> 80 81 <!-- Error 将日志以回滚文件的形式写到文件中 --> 82 <appender name="RollingFileError" type="log4net.Appender.RollingFileAppender" > 83 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 84 <file value="App_Data\" /> 85 <!-- 日志文件的命名规则 --> 86 <datePattern value="yyyy-MM-dd/'Error.log'"/> 87 <!-- 将日志信息追加到已有的日志文件中--> 88 <appendToFile value="true" /> 89 <rollingStyle value="Size" /> 90 <maxSizeRollBackups value="100" /> 91 <maximumFileSize value="1MB" /> 92 <!-- 指定按日期切分日志文件 --> 93 <rollingStyle value="Date"/> 94 <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 95 <staticLogFileName value="false" /> 96 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 97 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 98 <layout type="log4net.Layout.PatternLayout"> 99 <conversionPattern value="%newline%newline【日志时间】:%d 【线程ID】:%thread %newline【日志级别】:%-5p %newline【日志对象】:%logger %newline【日志内容】:%m %newline" /> 100 </layout> 101 <filter type="log4net.Filter.LevelRangeFilter"> 102 <param name="LevelMin" value="Error" /> 103 <param name="LevelMax" value="Error" /> 104 </filter> 105 </appender> 106 107 <!-- Fatal 将日志以回滚文件的形式写到文件中 --> 108 <appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender" > 109 <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 110 <file value="App_Data\" /> 111 <!-- 日志文件的命名规则 --> 112 <datePattern value="yyyy-MM-dd/'Fatal.log'"/> 113 <!-- 将日志信息追加到已有的日志文件中--> 114 <appendToFile value="true" /> 115 <rollingStyle value="Size" /> 116 <maxSizeRollBackups value="100" /> 117 <maximumFileSize value="1MB" /> 118 <!-- 指定按日期切分日志文件 --> 119 <rollingStyle value="Date"/> 120 <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 121 <staticLogFileName value="false" /> 122 <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 123 <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 124 <layout type="log4net.Layout.PatternLayout"> 125 <conversionPattern value="%newline%newline【日志时间】:%d 【线程ID】:%thread %newline【日志级别】:%-5p %newline【日志对象】:%logger %newline【日志内容】:%m%newline" /> 126 </layout> 127 <filter type="log4net.Filter.LevelRangeFilter"> 128 <param name="LevelMin" value="Fatal" /> 129 <param name="LevelMax" value="Fatal" /> 130 </filter> 131 </appender> 132 133 <root> 134 <!--控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF 135 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 136 如果没有定义LEVEL的值,则缺省为DEBUG--> 137 <appender-ref ref="RollingFileDebug" /> 138 <appender-ref ref="RollingFileInfo" /> 139 <appender-ref ref="RollingFileWarn" /> 140 <appender-ref ref="RollingFileError" /> 141 <appender-ref ref="RollingFileFatal" /> 142 <level value="DEBUG" /> 143 </root> 144 <logger name="NHibernate"> 145 <level value="WARN" /> 146 </logger> 147 </log4net>
配置总结:
log4net主要有Appenders(输出媒介)、Filters(过滤器)、Layouts(布局)、Loggers(日志类别)、Object Renders(渲染器)组成。
<root>为根节点
<logger>主要负责日志的记录,它记录的方式有多种,可以是以文件、数据库、控制台、邮件等多处方式;
继承<root>,logger输出日志时,<root>也输出。示例
<logger name="loginfo">
<level value="INFO" />
<appender-ref ref="InfoAppender" />
</logger>
Logger提供了多种方式来记录一个日志消息,也可以有多个Logger同时存在。每个实例化的Logger对象对被log4net作为命名实体(Named Entity)来维护。log4net使用继承体系,也就是说假如存在两个Logger,名字分别为a.b.c和a.b。那么a.b就是a.b.c的祖先。每个Logger都继承了它祖先的属性
<level>为日志等级;由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF;比如定义级别为<level value="INFO"/>,则INFO级别向下的级别,比如DEBUG日志将不会被记录;如果没有定义LEVEL的值,则缺省为DEBUG
<appender>为输出媒介,常用有AdoNetAppender(输出到数据库),AspNetTraceAppender(输出到ASP.NET日志),ConsoleAppender(输出到console),BufferingForwardingAppender(按信息条数输出到console),ColoredConsoleAppender/ManagedColoredConsoleAppender(根据设定颜色输出到console),EventLogAppender(输出到操作系统应用程序日志),FileAppender(输出到文件),RollingFileAppender(有回收的输出到文件),SmtpAppender(输出到邮件),RemotingAppender(远程输出)
<filter>过滤器,用来过滤输出源输出的内容,其中包括:
·DenyAllFilter 阻止所有的日志事件被记录
·LevelMatchFilter 只有指定等级的日志事件才被记录
·LevelRangeFilter 日志等级在指定范围内的事件才被记录
· LoggerMatchFilter Logger名称匹配,才记录
·PropertyFilter 消息匹配指定的属性值时才被记录
· StringMathFilter 消息匹配指定的字符串才被记录
示例:
<appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
log4net layout ConversionPattern常用符号说明
%m,%message:输出的日志消息;
%M,%method:输出调用日志输出的方法名;
%n,%newline:输出一个回车换行符;
%d,%date:输出当前语句运行的时刻,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出2015-03-10 14:53:28;也可以%d{ISO8601}输出2015-03-10 14:51:12,220, %d{DATE}输出‘10 Mar 2015 14:51:51,318’, %d{ABSOLUTE}输出14:54:07,943,%d{HH:mm:ss,fff}, %d{dd MM yyyy HH:mm:ss,fff},yyyy年份,MM月份,dd日期,HH小时小时24制,hh小时12小时制,mm分钟,ss秒,fff毫秒(f为秒的精确位数,几个f代表精确到小数点后几位)
%r(runtime),%timestamp:输出程序从运行到执行到当前语句时消耗的毫秒数;
%t,%thread:当前语句所在的线程ID ;
%p(priority),%level: 输出日志的当前日志级别,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG;
%C(class),%class,%type:输出当前日志对象的名称,%C{1}输出日志调用最后第一个类;
%c(category), %logger:输出日志信息所属目录类型logger name
%L,%line:输出语句所在的行号;
%l,%location:输出%F%L%C%M
%F,%file: 输出语句所在的文件名;
%a,%appdomain:输出引发日志事件的应用程序域的友好名称
%x,%ndc : 输出(nested diagnostic context)ndc上下文内容
%X,%mdc:输出(mapped diagnostic context)mdc上下文内容
%P,%property: 输出事件的特殊属性。例如: %property{user} 输出user属性
%[-|.]数字: %10,表示最小长度为10,如果不够,则用空格左侧填充;%-10,表示最小长度为10,如果不够,则用空格右侧填充;%.10,表示最大长度为10;可以与%m等其他格式组合使用,示例%10m,%-10m,%10.10m,%-10.10m
%%:输出%
解决占用问题
最小锁定模式,以允许多个进程可以写入同一个文件 例:
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
官方地址:http://logging.apache.org/log4net/
配置示例:http://logging.apache.org/log4net/release/config-examples.html