都不会输出
Spring Boot
中默认配置ERROR
、WARN
和INFO
级别的日志输出到控制台
怎么调整日志级别呢?
- 在application.properties或application.yml配置文件中 调整
logging.level.root=DEBUG
- 在运行Spring Boot应用程序时,通过命令行参数来设置日志级别
java -jar your-application.jar --logging.level.root=DEBUG
③ 日志写到文件中
需在application.properties或application.yml配置文件中设置logging.file
或logging.path
属性
logging.file
,设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.log
logging.path
,设置目录,会在该目录下创建spring.log
文件,并写入日志内容,如:logging.path=/var/log
如果只配置 logging.file
,会在项目的当前路径下生成一个 xxx.log
日志文件。
如果只配置 logging.path
,在 /var/log
文件夹生成一个日志文件为 spring.log
注:二者不能同时使用,如若同时使用,则只有logging.file
生效
默认情况下,日志文件的大小达到10MB
时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO
8.3 日志基本使用
①第一种方法
我们参照官网:https://www.slf4j.org/manual.html 的例子即可
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
②第二种方法
第一种方法中,每次使用都要创建了一个名为 logger
的Logger对象,使用起来有点繁琐。这里我们引入注解方式实现
使用注解@Slf4j 需要安装lombok
插件
可以用{}
占位符来拼接字符串,而不需要使用+
来连接字符串。
@SpringBootTest
@Slf4j
class SpringbootdemoApplicationTests {
@Test
void testLog() {
String name = "xiezhr";
int age = 20;
log.info("name:{},age:{}", name, age);
}
}
日志输出如下:
2023-09-16T12:27:57.014+08:00 INFO 53792 --- [ main] c.x.s.SpringbootdemoApplicationTests : name:xiezhr,age:20
8.4 日志高级配置
前面几节说的都是springboot基本日志配置,如果这些都不能满足我们的需求,我们就需要添加logback-spring.xml
官方推荐的配置文件进行配置
logback-spring.xml
中 配置了两个
分别是①输出到控制台②将日志写到文件中 并且使用
指定开发/生产环境配置
大家可以参考下面配置
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<configuration>
<!-- SpringBoot默认logback的配置 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProperty scope="context" name="APP_NAME" source="spring.application.name"/>
<property name="LOG_HOME" value="/logs/${APP_NAME}"/>
<!--1. 输出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- <withJansi>true</withJansi>-->
<!--此日志appender是为开发使用,只配置最低级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 2. 输出到文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 当前记录的日志文档完整路径 -->
<file>${LOG_HOME}/log.log</file>
<!--日志文档输出格式-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} -%5level ---[%15.15thread] %-40.40logger{39} : %msg%n%n</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
<!-- 日志记录器的滚动策略,按日期,按大小记录 -->
<rollingPolicy class="ch.qos.logback.core.rolling.Tim