Logback介绍
logback作为log4j创作人的又一作,可以算是log4j的升级版吧。
目前,logback分为三个模块:logback-core,logback-classic和logback-access。logback-core模块为其他两个模块奠定了基础。logback-classic模块可以被同化为log4j的显着改进版本。此外,logback-classic本身实现了SLF4J API,因此您可以在logback和其他日志框架(如log4j或java.util.logging(JUL))之间来回切换。
配置步骤
1. 添加依赖包
<!-- 添加这个经典版的会将logback-core和slf4j-api的依赖也自动加入 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
<!-- 如果使用注解获取Logger对象那么需要下面这个Lombok插件才行(插件只适用于idea) -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.6</version>
</dependency>
没有使用maven项目的可以通过链接到maven的中心仓库下载jar包
2. 导入一个配置模板
你可以直接点击下面的链接下载一个logback基础的配置模板
- src
- main
- resources
- test
- resources
- main
3. 添加自定义的配置项
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
</layout>
</appender>
<logger name="com.base22" level="TRACE"/>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
4. 在代码中使用logback输出日志
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//@Slf4j // 如果使用这个注解则不用再需要通过logger工厂类获取Logger,没有插件就老老实实用工厂类获取也挺好,也就一行代码的事
public class LogbackTest {
private final static Logger logger = LoggerFactory.getLogger(LogbackTest.class);
public void testLog() {
// 通过注解方式获取的log对象
// log.trace("Hello World!");
// log.debug("How are you today?");
// log.info("I am fine.");
// log.warn("I love programming.");
// log.error("I am programming.");
// 通过工厂类方式获取的log对象
logger.trace("Hello World!");
logger.debug("How are you today?");
logger.info("I am fine.");
logger.warn("I love programming.");
logger.error("I am programming.");
}
}
附录(详细版)
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 相对项目根目录的子文件夹logs -->
<property name="HOME_LOG" value="logs"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>TRACE</level>
</filter>
<!-- 测试部署时使用如下配置 -->
<!-- 可让每天产生一个日志文件,最多 30 个,更早的删除 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${HOME_LOG}/log-%d{yyyy-MM-dd}.log
</fileNamePattern>
<maxHistory>10</maxHistory>
</rollingPolicy>
<!--
RollingFileAppender 一般情况下需要配置两个参数:
RollingPolicy,负责滚动。TriggeringPolicy,决定是否以及何时进行滚动
TimeBasedRollingPolicy比较特殊,它同时继承了RollingPolicy和TriggerPolicy。
-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -
%msg%n
</pattern>
</encoder>
<!-- 正式部署时使用此配置 -->
<!--
<file>${HOME_LOG}/log.log</file>
<append>true</append>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${HOME_LOG}/log.%i.log.zip
</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>7</maxIndex>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger -
%msg%n
</pattern>
</encoder>
<triggeringPolicy
class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>50MB</maxFileSize>
</triggeringPolicy>
-->
</appender>
<logger name="logback.demo" level="DEBUG"/>
<logger name="org.springframework" level="ERROR"/>
<root level="debug">
<appender-ref ref="STDOUT"/>
<appender-ref ref="RollingFile" />
</root>
</configuration>
```