springBoot日志配置

本文介绍了SpringBoot的日志配置,包括日志级别及其影响,SpringBoot默认使用Logback进行日志记录,以及如何修改控制台日志和自定义日志配置文件。详细讲解了配置文件的设置,如logging.file.name和logging.file.path,以及不同日志系统的配置文件名规则。
摘要由CSDN通过智能技术生成


前言

代码规约推荐曰志文件至少保存15天,可以根据日志文件的重要程度、文件大小及磁盘空间自己设置保存时间。要为曰志文件设置合理的生命周期及时清理过期的日志。
一般日志框架有:
Log4j JUL(java.util.logging)(java.util.logging)(担心被抢市场,推出的)
Log4j2( apache开发的很强大,借了log4j的名,但很多框架未适配上)
Logback(与Log4j是同一个人开发的,是log4j的升级版)

主流日志库(负责实现日志功能)有三个,分别为:log4j、log-jdk(java.util.logging.Logger)、logback。logback是log4j的升级版且本身实现了slf4j的接口。

一、日志级别

日志级别从低到高分为:ALL< TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
OFF 关闭:最高级别,不打印日志
FATAL 致命:指明非常严重的可能会导致应用终止执行的错误事件
ERROR 错误:指明错误事件,但应用可能还能继续运行
WARN 警告:指明可能潜在的危险状况
INFO 信息:指明描述信息,从粗粒度上描述了应用运行过程
DEBUG 调试:指明细致的事件信息,对调试应用最有用
TRACE 跟踪:指明程序运行轨迹,比DEBUG级别的粒度更细
ALL 所有:所有日志级别,包括定制级别

如果日志级别设置为L,>= L级别的日志才会输出。
即如果日志级别L设置INFO,只有级别为INFO、WARN,ERROR 后面的日志才会正常输出。

生产环境禁止输出 DEBUG 曰志且有选择地输出 INFO日志

二、springBoot默认日志

Spring Boot提供对JUL、log4j2、Logback的默认配置,默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。

从上图可以看到,日志输出内容元素具体如下:
时间日期:精确到毫秒
日志级别:ERROR, WARN, INFO, DEBUG or TRACE
进程ID
分隔符:— 标识实际日志的开始
线程名:方括号括起来(可能会截断控制台输出)
Logger名:通常使用源代码的类名
日志内容

1.日志依赖jar包

Spring Boot 默认的日志框架 logback,日志包需要的依赖spring-boot-starter-logging已经被spring-boot-starter依赖包含了
在这里插入图片描述

	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-web</artifactId>
	</dependency>

2.控制台默认日志修改

# 日志配置
logging:
  pattern:
    console: '%clr(%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n)' #控制台日志格式配置
  level: #Spring Boot默认设定的是 info 级别日志
    com.nianyu.demo.*.dao: debug  # 指定某个类或某个包的日志级别

在这里插入图片描述
代码里直接输出日志

private static final Logger logger =  LoggerFactory.getLogger(this.getClass());

public void log() {
   
		logger.trace("日志输出 trace");
        logger.debug("日志输出 debug");
        logger.info("日志输出 info");
        logger.warn("日志输出 warn");
        logger.error("日志输出 error");
}

3.自定义日志配置文件

默认情况下,springBoot将日志输出到控制台,不会写到日志文件。要写到日志文件需要配置。

方式一:

直接在配置文件配置

logging:
  pattern:
    file: '%clr(%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n)' #日志文件的日志格式
  level:
    root: warn #root日志以WARN级别输出
  file:
    path: /app/logs  #日志输出路径
    name: demo.log	 #指定日志文件名

注意: 如果只配置 logging.file.name,会在项目的当前路径下生成一个 xxx.log 日志文件;
如果只配置 logging.file.path,在配置的文件夹生成一个日志文件为 spring.log;
二者不能同时使用,如若同时使用,则只有logging.file.name生效;
默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件

方式二:

方式一只能配置简单的场景,保存路径、日志格式等,复杂的场景(区分 info 和 error 的日志、每天产生一个日志文件等)满足不了,只能通过写文件自定义日志配置

根据不同的日志系统,你可以按如下规则组织配置文件名,将日志的配置文件放在src/main/resources就能被正确加载:
Logbacklogback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4jlog4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
Log4j2log4j2-spring.xml, log4j2.xml
JDK (Java Util Logging)logging.properties

Spring Boot官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml),命名为logback-spring.xml的日志配置文件,springBoot可以为它添加一些springBoot特有的配置项(下面会提到)因为:
logback.xml :是直接就被日志框架加载了, 加载早于application.properties,application.yml。
logback-spring.xml:配置项不会被日志框架直接加载,而是由 SpringBoot 解析日志配置文件
所以如果你在logback.xml使用了变量时,而恰好这个变量是写在application.properties时,那么就会获取不到,只要改成logback-spring.xml就可以解决

如果不想用规定的上述日志配置文件名,可以自己自定义命名, 需要在application.yml中配置日志配置文件的位置, 并且也可以用springBoot特有的配置项

logging
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值