Spring Boot 日志管理

Spring Boot 日志管理在代码有问题的时候,很多人应该都是通过debug的方式去排查,往往忽略了日志的重要性。好的日志管理可以快速定位问题出现的位置,也可以提高代码的阅读性。这篇博文主要介绍一下SpringBoot中关于日志方面的知识。一、Logging介绍SpringBoot为JavaUtilLogging,Log4J2和Logback提供了默认配置。每个日志框架,都默认配置了控…

大家好,又见面了,我是你们的朋友全栈君。

在代码有问题的时候,很多人应该都是通过 debug 的方式去排查,往往忽略了日志的重要性。

好的日志管理可以快速定位问题出现的位置,也可以提高代码的阅读性。这篇博文主要介绍一下 Spring Boot 中关于日志方面的知识。

一、Logging 介绍

Spring Boot 为 Java Util Logging,Log4J2 和 Logback 提供了默认配置。每个日志框架,都默认配置了控制台输出,并且还提供了日志文件输出功能。

如果你使用 Spring Boot 的 Starters,那么默认使用的日志框架是 Logback。Spring Boot 底层也对 Java Util Logging,Commons Logging,Log4J 或 SLF4J 日志框架进行了适配。因此只要进行相关的设置,就可以实现日志框架的切换。

提供了这么多日志框架,应该选择哪一个呢?不用担心,在不修改任何日志依赖项的时候,Spring Boot 的日志框架就可以正常运行。

二、Logging 格式

Spring Boot 默认日志输出如下:




这里写图片描述


  • 日期时间:精确到毫秒
  • 日志级别:ERRORWARNINFODEBUG or TRACE
  • 进程 id
  • 分割符:用于区分实际的日志记录
  • 线程名:括在方括号中
  • 日志名字:通常是源类名
  • 日志信息

三、Logging 级别

日志级别从低到高依次是:TRACE < DEBUG < INFO < WARN < ERROR < FATALLogback 日志不提供 FATAL 级别,它被映射到 ERROR 级别。

Spring Boot 只会输出比当前级别高的日志,默认的日志级别是 INFO,因此低于 INFO 级别的日志记录都不输出。

可以在 application.properties 配置文件中通过 logging.level.<logger-name>=<level> 方式设置日志的级别。

在默认级别(INFO)下执行下面的代码:

@SpringBootTest
@RunWith(SpringRunner.class)
public class LoggerTest { 
   

    private static final Logger logger = LoggerFactory.getLogger(LoggerTest.class);

    @Test
    public void test() {
        logger.trace("trace 级别的日志");
        logger.debug("debug 级别的日志");
        logger.info("info 级别的日志");
        logger.warn("warn 级别的日志");
        logger.error("error 级别的日志");
    }
}

控制台输出如下:




这里写图片描述


四、other

4.1 日志文件输出

默认情况下,Spring Boot 日志仅输出在控制台,不会写入日志文件。如果想要写入日志文件,需要在
application.properties 中设置 logging.filelogging.path 属性。

  • logging.file:设置文件,可以是绝对路径,也可以是相对路径。
  • logging.path:设置目录,会在该目录下创建一个 spring.log 文件,写入日志内容

日志文件在达到 10 MB 时会轮换,并且与控制台输出一样,默认情况下会记录 ERROR 级别,WARN 级别和 INFO 级别的消息。 可以使用 logging.file.max-size 属性更改大小限制。

4.2 通用配置

下面是 application.properties 文件中关于日志的配置,贴出来供大家参考。

# 启用日志颜色
spring.output.ansi.enabled=always
logging.level.root=INFO
# mapper 接口所在的包设置为 debug
logging.level.com.×××.mapper=DEBUG
# 在当前项目下生成日志文件
logging.file=./logs/×××.log
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %clr(%logger){cyan} %clr(%msg%n){green} logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n

PS:

虽然 Spring Boot 适配了多种日志框架,一般情况下,我们不会切换掉 Logback,因为 Logback 相对于其他的日志框架速度更快,占用内存更少。

关于工作中日志的开发,可以参考一下这篇博文:日志打印

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139750.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • MATLAB求解线性规划(含整数规划和0-1规划)问题[通俗易懂]

    MATLAB求解线性规划(含整数规划和0-1规划)问题[通俗易懂]线性规划是数学规划中的一类最简单规划问题,常见的线性规划是一个有约束的,变量范围为有理数的线性规划。如:对于这类线性规划问题,数学理论已经较为完善,可以有多种方法求解此类问题。但写这篇文章的目的并不是为了介绍数学理论,我们这里主要讲解如果利用工具求解这一类线性规划问题。最著名,同时也是最强大的数学最优化软件是LINGO/LINDO软件包,它能够求解多种的数学规划问题,同时还提供了多

  • 滑动窗口算法学习

    滑动窗口算法学习最近做了几道有关滑动窗口的算法,在此总结一下。滑动窗口就像描述的那样,可以理解成是一个会滑动的窗口,每次记录下窗口的状态,再找出符合条件的适合的窗口可以使用滑动窗口来减少时间复杂度经典滑动窗口题目给一组大小为n的整数数组,计算长度为k的子数组的最大值比如:数组{1,2,3,4,5,7,6,1,8},k=2,那么最终结果应该是7+6=13最大。最简单的是使用两层遍历,通过所有情况找…

    2022年10月24日
  • 微生物组-宏基因组分析第8期 (报名直播课免费参加线下2020.7)[通俗易懂]

    微生物组-宏基因组分析第8期 (报名直播课免费参加线下2020.7)[通俗易懂]“福利公告:为了响应学员的学习需求,经过易生信培训团队的讨论筹备,现决定安排扩增子16S分析、宏基因组、Python课程和转录组的线上直播课。报名参加线上直播课的老师可在1年内选择参加同…

  • 用方框图来表示指令周期函数_加法指令周期流程图

    用方框图来表示指令周期函数_加法指令周期流程图这个方框图确实叫人头疼。

    2022年10月11日
  • Python 创建加密压缩文件「建议收藏」

    Python 创建加密压缩文件「建议收藏」Python创建加密压缩文件1.配置ZLibhttp://www.winimage.com/zLibDll/minizip.html下载之后将zlibwapi.dll放在demo/目录下,与minizip.exe一起使用2.命令行使用minizip.exe>minizip.exeMiniZip1.01b,demoofzLib…

  • 大数据技术的发展趋势

    大数据技术的发展趋势英国牛津大学教授维克托·迈尔-舍恩伯格在其所撰写的《大数据时代》中表述,大数据时代是“已经发生的未来”,而在这个已经发生的未来里,没有旁观者。作为时代发生的必然产物,大数据正加速渗透至我们的日常生活,正完成对各传统领域的颠覆。本文从大数据时代的特点出发,为读者介绍目前的大数据技术的发展趋势以及大数据的生态体系。大数据时代的特点和市场规模大数据时代两个特点。第一,大数据技术以开源为主,迄今为止,尚未形成绝对技术垄断,即便是IBM、甲骨文等行业巨擘,也同样是集成了开源技术和该公司已有产品而已。开源技

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号