1. Logback 介绍
- Logback 是由 log4j 创始人设计的又一个开源日志组件
- Logback 当前分成三个模块:logback-core,logback- classic 和 logback-access
- logback-core 是其它两个模块的基础模块,类似与 springframework
- logback-classic 是 log4j 的一个改良版本。此外 logback-classic 完整实现 SLF4J API。使你可以很方便地更换成其它日志系统如 log4j 或 JDK14 Logging
- logback-access 访问模块与 Servlet 容器集成提供通过 Http 来访问日志的功能
2. log4j
和 SpringBoot 集成的 log4j 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
3. SLF4J
Simple Logging Facade for Java(SLF4J)用作各种日志框架(例如java.util.logging,logback,log4j)的简单外观或抽象,允许最终用户在部署时插入所需的日志框架。
参考:https://blog.csdn.net/qq_39326472/article/details/122569587
4. SpringBoot 日志系统
1. 日志门面
日志门面:是对不同日志框架提供的一个门面封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案。
1. common-logging
由 appach 提供的一个通用的日志接口。常见的使用代码:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class A {
private static Log log = LogFactory.getLog(A.getClass());
log.info("参数:" + name);
}
2. slf4j
slf4j全称为Simple Logging Facade for JAVA,java简单日志门面。类似于Apache Common-Logging,是对不同日志框架提供的一个门面封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@Service
public class LogServiceImple implements LogService {
private static final Logger log = LoggerFactory.getLogger(LogServiceImple.class);
@Override
public String creatName(String name) {
log.info("参数:{}", name);
return name + "是二货!";
}
}
也可以结合 lombok
注解 @Slf4j
使用
@Slf4j
@Service
public class LogServiceImple implements LogService {
@Override
public String creatName(String name) {
log.info("参数:{}", name);
return name + "是二货!";
}
}
Slf4j 相比 Common-logging,个人感觉就是多了 log.info("参数:{}", "张三")
这种使用 {} 填充参数用法,Common-logging 只能拼接了,Slf4j 也是我们常用的,两种日志门面都在 spring-boot-start
中有,所有都可以直接使用。
2. 日志实现
相比上面的 Slf4j 和 Common-logging 两种日志门面,我们实际需要日志的实现,常用的就是 log4j 和 logback 了。Springboot 默认使用 logback,也是推荐使用的,我们可以不做修改。
当需要修改的时候,只需修改 pom 相关的 starter
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<!-- 排除自带的logging依赖 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加 log4j 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
</dependencies>
这样就修改 log4j 作为日志系统的底层实现,使用方法不用修改。官方建议使用 logback
3. 日志格式说明
4. 日志级别
日志级别可以帮助我们筛选信息,从而节省程序员筛选日志的时间,日志级别可以控制不同环境下,打印日志的详细程度,如开发环境我们需要详细的日志信息,而线上环境我们为了性能,就打印少量的日志
- trace:级别最低
- debug:调试级别的,常用于跟踪程序的进展
- info:普通的打印信息(默认的日志级别)
- warn:警告级别,不影响使用,但应该注意
- error:错误级别,错误日志信息打印
- fatal:致命级别,因代码异常导致程序退出,级别最高
日志的级别越高,打印的日志信息就越少
设置 SpringBoot 日志级别:默认 info
logging:
level:
# 全局日志级别
root: info
# 指定包的日志级别
com.demo.service: warn
5. 持久化日志
将日志打印到固定路径中:
logging:
file:
path: D:\gaox\logs
将日志打印到固定文件中:
logging:
file:
name: D:\gaox\logs\test.txt
6. 日志配置
logback 默认读取 logback-spring.xml
, logback-spring.groovy
, logback.xml
, logback.groovy
几个配置文件,放在 src/main/resource 下即可。也可以自己指定配置文件:
logging.config=classpath:logging-config.xml
For Example: logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logback</contextName>
<property name="log.path" value="/logs/xxxx" />
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>-->
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<!-- logback为java中的包 -->
<logger name="com.xxx"/>
<!--logback.LogbackDemo:类的全路径 -->
<logger name="com.xxx.xxx.Test" level="WARN" additivity="false">
<appender-ref ref="console"/>
</logger>
</configuration>
标签:logging,SpringBoot,boot,系统,org,日志,logback,log4j
From: https://www.cnblogs.com/cnff/p/17603955.html