SpringBoot系列(三十九):log4j2基本使用入门|超级详细,建议收藏

Posted bug菌¹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot系列(三十九):log4j2基本使用入门|超级详细,建议收藏相关的知识,希望对你有一定的参考价值。

👨‍🎓作者: bug菌
✏️博客: CSDN掘金infoQ51CTO
🎉简介:CSDN、 掘金等社区优质创作者,全网合计7w粉+,对一切技术都感兴趣,重心偏Java方向,目前运营公众号「 猿圈奇妙屋」,欢迎小伙伴们的加入,一起秃头,一起变强。
..
✍️ 温馨提醒:本文字数:999字, 阅读完需:约 5 分钟

嗨,家人们,我是bug菌呀,我又来啦。今天我们来聊点什么咧,OK,接着为大家更《springboot零基础入门教学》系列文章吧。希望能帮助更多的初学者们快速入门!

小伙伴们在批阅文章的过程中如果觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章 点亮 👍吧,您的点赞三连( 收藏+关注 👨‍🎓 +留言 📃)就是对bug菌我创作道路上最好的鼓励与支持 😘。时光不弃 🏃🏻‍♀️,创作不停 💕,加油 ☘️

一、前言🔥

环境说明:Windows10+idea2021.3.2+jdk1.8+springboot2.3.1.RELEASE

大家肯定都对Log4j非常熟悉,一种日志插件,Apache旗下的开源项目。但是不排除还有的小伙伴忘了,没关系,接下来我会大家回忆一下下Log4j。

Log4j 是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件、甚至是套接口服务 器、NT 的事件记录器、UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。Log4j由三部分构成:

  • 日志信息优先级。

表示用来指定这条日志信息的重要程度。

  • 日志信息输出目的地。

表示日志信息的输出目的地指定了日志将打印到控制台还是文件中;

  • 日志信息输出格式。

表示输出格式则控制了日志信息的显示内容。

而今天我要介绍的是Log4j的进阶版,Log4j2,它比其前身Log4j 1.x有做重大改进,并改进了Logback,同时修复了Logback架构中的一些问题;可以说是目前最优秀的Java日志框架,没有之一。

二、jar依赖包🔥

<!-- log4j2的依赖引入 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

三、日志使用🔥

为了演示log4j2的基本功能点,接下来我给创建一个测试用例,进行日志不同级别输出演示。

package com.example.demo;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * @author luoYong
 * @version 1.0
 * @date 2022/11/17 16:46
 */
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class Log4j2Test 

    private static Logger logger = LogManager.getLogger(Log4j2Test.class);

    @Test
    void log4j2Test() throws Exception 
        // 一直打印日志,用于测试Log4j2功能
        logAll();
    

    // 打印各种级别的日志用于测试
    public static void logAll() throws Exception 
        //TRACE < DEBUG < INFO < WARN < ERROR < FATAL
        logger.trace("trace level log");
        logger.debug("debug level log");
        logger.info("info level log");
        logger.warn("warn level log");
        logger.error("error level log");
        logger.fatal("fatal level log");
    

接着我们来看下控制台输出:

四、日志级别🔥

对于log4j2日志级别,它志信息的优先级从高到低排有ERROR>WARN>INFO>DEBUG,完整来说是有8种(ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF)。

当日志级别设置为某一级别时,则会打印大于等于该级别的日志,比如日志级别设置为ERROR,则会打印ERROR,FATAL级别的日志,也就是当你设置日志级别为ALL,则会把所有级别的日志都打印出来,OFF则不打印任何级别的日志,所以严格来讲只有6种日志级别。

五、日志打印🔥

我们随意在非测试类中写个程序,让日志进行打印。

//开始使用日志进行输出
@GetMapping("/demo1")
public void test1() 
    log.info("程序执行咯!记录日志啦");

我们可以来看控制台,到底输出了什么?

17:01:22.215 [http-nio-8080-exec-5] INFO  com.example.demo.controller.TestController - 程序执行咯!记录日志啦

知道这一长串都表达什么意思呢?不急,咱们往下看。

六、log4j2.xml配置文件🔥

给大家演示个比较简短的配置文件作为示例进行讲解;

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%dHH:mm:ss.SSS [%t] %-5level %logger36 - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Root level="ERROR">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

对于上方配置文件,主要有两类配置:

一类是Appenders:定义日志输出目的地,内容和格式等。

另一类是Loggers:定义日志级别和使用的Appenders。

具体讲述一下Appenders配置

Appenders表示日志输出到控制台的标准输出。

<!--输出日志的格式-->
<PatternLayout pattern="%dateHH:mm:ss.SSS [%thread] %-5level %logger36 - %msg%n"/>

pattern定义日志输出格式:

  1. %dateHH:mm:ss.SSS:表示输出日志的打印日期,精确到毫秒。

  1. [%thread]:表示当前线程名称。

  1. %-5level:表示级别从左显示5个字符宽度。

  1. %logger36:表示输出Logger名称最长36个字符;一般是类的全限定路径名。

  1. %msg:表示日志信息。

  1. %n:表示日志换行。

接着给大家看下实际如上设置,控制台输出的日志会是如何?

                17:01:22.215 [http-nio-8080-exec-5] INFO  com.example.demo.controller.TestController - 程序执行咯!记录日志啦

这不,还是上面第4点介绍日志等级给大家写的demo样式输出的日志样式,这样你们就能很好的理解了吧。

... ...

ok,以上就是我这期的全部内容啦,如果还想学习更多,你可以看看我的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能成为令人敬仰的大佬的。好啦,咱们下期见~

七、往期推荐🔥

  • ... ...

八、文末🔥

如果还想要学习更多,小伙伴们可关注bug菌专门为大家创建的专栏《springboot零基础入门教学》,从无到有,从零到一!希望能帮助到更多小伙伴们。

我是bug菌,一名想走 👣 出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!


感谢认真读完我博客的铁子萌,在这里呢送给大家一句话,不管你是在职还是在读,绝对终身受用。
时刻警醒自己:
抱怨没有用,一切靠自己;
想要过更好的生活,那就要逼着自己变的更强,生活加油!!!

以上是关于SpringBoot系列(三十九):log4j2基本使用入门|超级详细,建议收藏的主要内容,如果未能解决你的问题,请参考以下文章

Powershell管理系列(三十九)PowerShell查询和解锁AD账号

C#之三十九 抽象工厂模式

tableau实战系列(三十九)-Tableau可视化之多变地图

MATLAB实战系列(三十九)-matlab多目标优化之海洋捕食者算法

[系统安全] 三十九.APT系列APT攻防溯源普及和医疗数据安全防御总结

Qt系列文章之三十九(Qt多语言国际化程序实例设计实现)