写点什么

Spring Boot 之 log4j2 基础使用入门|超级详细,建议收藏

作者:bug菌
  • 2023-04-24
    江苏
  • 本文字数:2800 字

    阅读完需:约 9 分钟

Spring Boot之log4j2基础使用入门|超级详细,建议收藏

👨‍🎓作者:bug 菌

✏️博客:CSDN、掘金、infoQ、51CTO 等

🎉简介:CSDN 博客专家,C 站历届博客之星 Top50,掘金/InfoQ/51CTO 等社区优质创作者,全网粉丝合计 10w+,对一切技术感兴趣,重心偏 Java 方向;硬核公众号「 猿圈奇妙屋」,欢迎小伙伴们的加入,一起秃头,一起变强。

..

✍️温馨提醒:本文字数:2800 字, 阅读完需:约 8 分钟

        如果小伙伴们在批阅文章的过程中觉得文章对自己有帮助,请别吝啬手中的赞呀,大胆的把文章点亮👍,相信你点赞了好的文章,平台也会经常给你推荐高质量好文,您的点赞三连(收藏+关注+留言)就是对 bug 菌写文道路上最好的鼓励与支持😘。时光不弃🏃🏻‍♀️,创作不停💕,加油☘️

一、前言🔥

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.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="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>    </Console>  </Appenders>  <Loggers>    <Root level="ERROR">      <AppenderRef ref="Console"/>    </Root>  </Loggers></Configuration>
复制代码

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

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

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

具体讲述一下 Appenders 配置

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

<!--输出日志的格式--><PatternLayout pattern="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
复制代码

pattern 定义日志输出格式:

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

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

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

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

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

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

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

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

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

... ...

        ok,以上就是我这期的全部内容啦,如果还想学习更多,可以看看我的往期热文推荐哦,不积跬步,无以至千里; 不积小流,无以成江海,一口吃不成一个大胖子,加油!咱们下期拜拜~~

文末🔥

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


感谢认真读完我博客的铁子萌,在这里呢送给大家一句话,不管你是在职还是在读,绝对终身受用。

时刻警醒自己:

抱怨没有用,一切靠自己;

想要过更好的生活,那就要逼着自己变的更强,生活加油!!!


发布于: 刚刚阅读数: 4
用户头像

bug菌

关注

公众号 | 猿圈奇妙屋 2020-07-30 加入

CSDN/阿里云/51CTO博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者,全网粉丝合计10w+,硬核公众号「猿圈奇妙屋」,欢迎你的加入!免费领取海量资料。

评论

发布
暂无评论
Spring Boot之log4j2基础使用入门|超级详细,建议收藏_Spring Boot_bug菌_InfoQ写作社区