目录
在专栏前文中已经介绍Spring日志级别:
创建LoggerController,其内容如下:
package com.example.iocdemo1.Controller;
import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class LoggerController {
private static Logger logger= LoggerFactory.getLogger(LoggerController.class);
@PostConstruct
public void print(){
logger.error("Error log");
logger.warn("Warn log");
logger.info("Info log");
logger.debug("Debug log");
logger.trace("Trace log");
}
}
1. 配置日志级别
1.1 配置方法
现在application.yml中修改Spring的默认日志级别,以实现更多级别日志的打印;
root表示根目录,在application.yml中,使用root配置所有日志的默认级别。
application.yml日志内容如下:
logging:
level:
root: debug
1.2 代码示例
启动程序,日志输出如下:
可见高于等于DEBUG级别的日志均打印,仅TRACE级别的日志没有打印;
2. 分目录打印日志
在上例中,可见当将默认打印日志级别设置为DEBUG会打印较多日志,现试对日志进行分目录打印,以Spring日志打印INFO及其以上级别,项目日志打印DEBUG为例。
2.1 配置方法
可在Spring官网查看关于更多日志级别配置:
若需将Spring日志和项目日志打印的级别进行区分,则需将项目目录进行配置,如对于当前目录,其目录结构如下:
则当前项目目录为com.example.iocdemo1,使用该目录进行默认日志打印级别的配置。
2.2 配置示例
配置yml文件如下:
logging:
level:
root: info
com:
example:
iocdemo1: debug
重新启动程序,查看日志:
3. 日志持久化
日志持久化即对日志进行长久的保存,将数据保存在数据库中,将日志保存在文件中都是持久化的方式。
可在Spring官网查看关于更多日志级别配置:
有两种配置方式:
(1)使用logging.file.name配置文件名;
(2)使用logging.file.path配置文件路径;
3.1 方式1:配置文件名
配置yml文件内容如下:
logging:
level:
root: info
com:
example:
iocdemo1: debug
file:
name: zhouyou.log
重启项目进行刷新,在项目目录中可见zhouyou.log:
也可在资源管理器中查看,若未限制路径,则该文件默认在工程目录下:
name也可以配置日志路径:记为logger包下的ioc.log:
yml文件如下:
logging:
level:
root: info
com:
example:
iocdemo1: debug
file:
name: logger/ioc.log
重新启动程序,可在目录处查看到文件:
3.2 方式2:配置路径
使用logging.file.path可以设置文件路径,且默认名为spring.log。且不能设置名称,否则会被解析为多层目录,再将文件名设置为spring.log;
配置yml文件如下:
logging:
level:
root: info
com:
example:
iocdemo1: debug
file:
path: logger1
重启程序,可在目录处查看到文件:
总结:
logging.file.name既可用于配置文件名,也可以用于配置路径,logging.file.path只可以用于配置路径。当二者同时存在时,path就会失效,name的优先级更高。
通常使用logging.file.name进行配置;
4. 分割日志文件
如果将所有日志都放在一个文件中,则随着项目运行,日志文件会越来越大,则需对日志文件进行分割;
可在Spring官网查看关于更多日志级别配置:
4.1 配置分割文件最大大小
yml文件如下,表示当日志文件大于1KB时就进行分割:
logging:
level:
root: info
com:
example:
iocdemo1: debug
file:
name: logger/ioc.log
logback:
rollingpolicy:
max-file-size: 1KB
(若当前输出日志文件大小不够1KB而无法观察分割效果,可将默认打印日志级别降为debug,以产生更多日志信息)
重启程序,可见日志文件分割效果:
4.2 配置分割文件的名称定义规则
在官网中可查看到默认值:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
现将日志文件后缀的.gz删除,yml文件如下:
logging:
level:
root: info
com:
example:
iocdemo1: debug
file:
name: logger/ioc.log
logback:
rollingpolicy:
max-file-size: 1KB
file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
重启程序查看目录处的日志文件名称格式:
注:1、关于最大分割大小:日志文件的分割是以行来分割而不是以字符分割的。
假设当前max-file-size设为1KB,并不是达到1KB就立即分割,会将本行日志存储后再进行分割;
2、企业中通常日志分割大小为200M或500M;