2017.7.27 logback配置文件
参考来自: Java深入 - logback的配置和使用
1 模块组成
logback分成三个模块:logback-core,logback- classic和logback-access。
1 logback-core:其他两个的基础模块。 2 logback-classic:log4j的改良版本。完整实现slf4j的api,因此可以很方便的换成其他日志系统。 3 logback-access:与servlet集成,提供通过http来访问日志的功能。
2 maven依赖
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j-version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>${logback-version}</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>{logback-version}</version> </dependency>
3 配置文件
3.1 存放位置
logback的配置文件都放在/src/main/resource/文件夹下的logback.xml文件中,系统会自动找到这个配置文件。
也可以自定义配置文件的位置:
3.2 在控制台输出指定级别的日志
1 <?xml version="1.0" encoding="UTF-8"?> 2 <configuration> 4 <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> 5 <!-- 典型的日志pattern --> 6 <encoder> 7 <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern> 8 </encoder> 9 </appender> 10 <root> 11 <level value="error"/> 12 <appender-ref ref="console"/> 13 </root> 14 </configuration>
3.3 在文件中存放指定级别的日志
1 <?xml version="1.0" encoding="UTF-8"?> 2 <configuration> 3 <!-- 综合时间与大小的滚动策略,先按小时滚动,小时内的文件大于10mb时再按大小滚动 --> 4 <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> 5 <file>/var/log/local/xinsight/aas/aas.log</file> 6 <Encoding>UTF-8</Encoding> 7 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 8 <fileNamePattern>/var/log/local/xinsight/aas/aas-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern> 9 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 10 <maxFileSize>10MB</maxFileSize> 11 </timeBasedFileNamingAndTriggeringPolicy> 12 </rollingPolicy> 13 14 <encoder> 15 <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern> 16 </encoder> 17 </appender> 18 19 <root> 20 <level value="WARN"/>
20 <level value="INFO"/> 21 <appender-ref ref="logFile" /> 22 </root> 23 </configuration>
3.4 精确设置每个包下面的日志
2 <logger name="com.service" level="WARN"/> 3 <logger name="com.common" level="DEBUG"/> 4 <logger name="dao" level="DEBUG"> 5 <appender-ref ref="file" /> 6 <appender-ref ref="console" /> 7 </logger>
3.5 完整示例
1 <?xml version="1.0" encoding="UTF-8"?> 2 <configuration> 3 4 <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> 5 <!-- 典型的日志pattern --> 6 <encoder> 7 <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern> 8 </encoder> 9 </appender> 10 11 <!-- 演示按时间滚动的策略 --> 12 <!--<appender name="defaultlogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">--> 13 <!--<file>/tmp/logs/authmgr.log</file>--> 14 <!-- --> 15 <!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">--> 16 <!--<fileNamePattern>/tmp/logs/authmgr.%d{yyyy-MM-dd}.log</fileNamePattern>--> 17 <!--<!– 保留 30天数据,默认无限–>--> 18 <!--<maxHistory>30</maxHistory>--> 19 <!--</rollingPolicy>--> 20 <!-- --> 21 <!--<encoder>--> 22 <!--<pattern>%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>--> 23 <!--</encoder>--> 24 <!--</appender>--> 25 26 <!-- 按文件大小滚动的策略 --> 27 <!--<appender name="metricsLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">--> 28 <!--<file>/tmp/logs/metrics.log</file>--> 29 <!-- --> 30 <!--<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">--> 31 <!--<fileNamePattern>/tmp/logs/metrics.%i.log</fileNamePattern>--> 32 <!--<!– 最多保留10个文件,默认是7 –>--> 33 <!--<maxIndex>10</maxIndex>--> 34 <!--</rollingPolicy>--> 35 <!-- --> 36 <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">--> 37 <!--<maxFileSize>10MB</maxFileSize>--> 38 <!--</triggeringPolicy>--> 39 <!-- --> 40 <!--<encoder>--> 41 <!--<pattern>%msg%n</pattern>--> 42 <!--</encoder>--> 43 <!--</appender>--> 44 45 <!-- 综合时间与大小的滚动策略,先按小时滚动,小时内的文件大于10mb时再按大小滚动 --> 46 <appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> 47 <file>/var/log/local/xinsight/aas/aas.log</file> 48 49 <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 50 <fileNamePattern>/var/log/local/xinsight/aas/aas-%d{yyyy-MM-dd_HH}.%i.zip</fileNamePattern> 51 <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 52 <maxFileSize>10MB</maxFileSize> 53 </timeBasedFileNamingAndTriggeringPolicy> 54 </rollingPolicy> 55 56 <encoder> 57 <pattern>[AAS] [%date{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36} - %msg%n</pattern> 58 </encoder> 59 </appender> 84 85 <logger name="com.mchange" level="WARN"/> 86 <logger name="com.service" level="DEBUG"/> 87 <logger name="dao" level="DEBUG"/> 88 89 <!-- root --> 90 <root level="WARN"> 91 <appender-ref ref="console"/> 93 <appender-ref ref="logFile" /> 94 </root> 95 </configuration>
3.6 logger和root的区别
参考来自:http://www.cnblogs.com/cb0327/p/5759441.html
1 logger: 2 用来设置具体的包或类的日志打印级别。 3 仅有一个name属性,一个可选的level和一个可选的addtivity属性。 4 addtivity表示是否继承上级的打印级别,比如<logger name="com.service"/>将控制com.service包下的所有类的日志打印,
但是并没用设置打印级别,所以继承他的上级<root>的日志级别“DEBUG”; 5 可以指定appender。
6 root: 7 也是<loger>元素,但是它是根loger。 8 只有一个level属性。
4 代码中使用
1 import org.slf4j.Logger; 2 import org.slf4j.LoggerFactory; 3 4 public abstract class Test{ 5 protected Logger logger = LoggerFactory.getLogger(this.getClass()); 6 7 logger.info("info"); 8 logger.error("error", tenantName, users.size()); 9 logger.debug("debug"); 10 }
fighting for this