日志-logback
参考:http://www.importnew.com/22290.html
一 概述
1.1 LogBack、Slf4j和Log4j之间的关系
1)Slf4j(The Simple Logging Facade for Java)是一个简单日志门面抽象框架本身只提供了日志Facade API和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用;Slf4j作为应用层的Log接入时,程序可以根据实际应用场景动态调整底层的日志实现框架(Log4j/LogBack/JdkLog…)。
2)LogBack是Log4j的改良版本详;细数据可参照下面地址:Reasons to prefer logback over log4j
1.2 logback 结构
分为三个部分:logback-core,logback-classic,logback-access
logback-core:logback核心功能,其他两部分基础;
logback-classic:实现了slf4j接口,当想要配合slf4j使用需要将logback-classic加入classpath
logback-access:集成Servlet环境准备,可提供HTTP-acess日志接口
二 配置详解
2.1 根节点
- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true.
- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟.
- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
XML代码:
"true" scanPeriod="60 second" debug="false">
2.2 根节点
"true" scanPeriod="60 second" debug="false"> "APP_Name" value="myAppName" /> ${APP_Name}
"true" scanPeriod="60 second" debug="false"> "bySecond" datePattern="yyyyMMdd'T'HHmmss"/> ${bySecond}
2.3 logger和root
logger设置某一个包或者具体的某一个类的日志打印级别
root:它是根logger
appender配置
ConsoleAppender;FileAppender;RollingFIleAppender;TimeBasedRollingPolicy;FixedWindowRollingPolicy;SizeBasedTriggeringPolicy
将日志写到文件中和控制台中
2.4 获得日志对象
1)Logger log = LoggerFactory.getLogger(class)
2)通过在对应类上注解@Slf4j,使用日志对象log即可
三 案例介绍
例子中有详细功能介绍
<?xml version="1.0" encoding="UTF-8"?>"true" scanPeriod="60 second" debug="false"> "STDOUT" class="ch.qos.logback.core.ConsoleAppender"> [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%5level] [%thread] %logger{0} %msg%n UTF-8 "DEBUG" class="ch.qos.logback.core.FileAppender"> debug.log true class="ch.qos.logback.classic.filter.LevelFilter"> DEBUG ACCEPT DENY [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%5level] [%thread] %logger{0} %msg%n UTF-8 "INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> info.log class="ch.qos.logback.classic.filter.ThresholdFilter"> INFO [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%5level] [%thread] %logger{0} %msg%n UTF-8 class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> info.%d{yyyy-MM-dd}.log 30 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 100MB "ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> error.log [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%5level] [%thread] %logger{0} %msg%n UTF-8 class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> error.%d{yyyy-MM}(%i).log.zip 1 3 class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 100MB 30 "ASYNC" class= "ch.qos.logback.classic.AsyncAppender"> 0 512 ref ref ="ERROR"/> "ch.qos.logback" /> "com.weizhi.common.LogMain" level="INFO" additivity="false"> ref ref="STDOUT"/> ref ref="ASYNC"/> "DEBUG"> ref ref="STDOUT"/> ref ref="ASYNC"/>
按天记录日志文件同时每天日志文件达到一定峰值新增日志文件
"true" scanPeriod="10 seconds"> "org/springframework/boot/logging/logback/base.xml" /> "LOG_PATH" value="/usr/local/tomcat/logs/tyzx" /> "INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> ${LOG_PATH}/info.log class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> ${LOG_PATH}/info-%d{yyyyMMdd}.log.%i class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 500MB 5 class="ch.qos.logback.classic.PatternLayout"> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n "ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> class="ch.qos.logback.classic.filter.ThresholdFilter"> ERROR ${LOG_PATH}/error.log class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> ${LOG_PATH}/error-%d{yyyyMMdd}.log.%i class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> 500MB 2 class="ch.qos.logback.classic.PatternLayout"> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} -%msg%n "INFO"> ref ref="INFO_FILE" /> ref ref="ERROR_FILE" />