Log4Net 配置日志按日期和日志级别分类写入
配置效果图:
配置代码:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <log4net> 3 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 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 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 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 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 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 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 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 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 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 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.config 配置代码
配置总结:
log4net主要有Appenders(输出媒介)、Filters(过滤器)、Layouts(布局)、Loggers(日志类别)、Object Renders(渲染器)组成。
继承
Logger提供了多种方式来记录一个日志消息,也可以有多个Logger同时存在。每个实例化的Logger对象对被log4net作为命名实体(Named Entity)来维护。log4net使用继承体系,也就是说假如存在两个Logger,名字分别为a.b.c和a.b。那么a.b就是a.b.c的祖先。每个Logger都继承了它祖先的属性
·DenyAllFilter 阻止所有的日志事件被记录
·LevelMatchFilter 只有指定等级的日志事件才被记录
·LevelRangeFilter 日志等级在指定范围内的事件才被记录
· LoggerMatchFilter Logger名称匹配,才记录
·PropertyFilter 消息匹配指定的属性值时才被记录
· StringMathFilter 消息匹配指定的字符串才被记录
示例:
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
%%:输出%
解决占用问题
最小锁定模式,以允许多个进程可以写入同一个文件 例:
官方地址:http://logging.apache.org/log4net/
配置示例:http://logging.apache.org/log4net/release/config-examples.html