Spring Boot 使用 Log4j2

Java 中比较常用的日志工具类,有 Log4j、SLF4j、Commons-logging(简称jcl)、Logback、Log4j2(Log4j 升级版)、Jdk Logging。

Spring Boot 默认使用 Logback,但相比较而言,Log4j2 在性能上面会更好。

Spring Boot(版本 1.5.10.RELEASE)中使用 Log4j2 非常简单,添加如下依赖:


    org.springframework.boot
    spring-boot-starter

            org.springframework.boot
            spring-boot-starter-logging

    org.springframework.boot
    spring-boot-starter-log4j2

  com.lmax
  disruptor
  3.3.6

  com.fasterxml.jackson.core
  jackson-core
  2.7.4

  com.fasterxml.jackson.core
  jackson-databind
  2.7.4


            %d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${hostName} --- [%15.15t] %-40.40c{1.} : %m%n%ex

        /var/log/spring-boot-log4j2

                ${LOG_PATTERN}

这边需要注意几个日志的级别:

  • Configuration status="OFF":这个 status配置的是,Log4j2 组件本身日志级别,指的是如果 Log4j2 本身出错,打印出的日志级别配置。
  • Root level="ERROR":这个 level配置的是,程序输入的日志级别,对应 log.error("this is a error"),程序会打印高于或等于所设置级别的日志。
  • ThresholdFilter level="ERROR":这个 level配置的是,输出到日志文件(或是其他)的日志日志级别,也就是在日志文件只输出 ERROR级别的日志,其他无关信息不输出。

在程序中使用 Log4j2 打印日志信息:

@SpringBootApplication
public class Log4j2DemoApplication implements ApplicationRunner {
    private static final Logger logger = LogManager.getLogger(Log4j2DemoApplication.class);

    public static void main(String[] args) {
        SpringApplication.run(Log4j2DemoApplication.class, args);
    }

    @Override
    public void run(ApplicationArguments applicationArguments) throws Exception {
        logger.debug("Debugging log");
        logger.info("Info log");
        logger.warn("Hey, This is a warning!");
        logger.error("Oops! We have an Error. OK");
        logger.fatal("Damn! Fatal error. Please fix me.");
    }
}

或者使用 Lombok,可以更方便的使用 Log4j2,需要添加依赖:


  org.projectlombok
  lombok

使用代码:

import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Log4j2
@RestController
public class HelloController {

    @RequestMapping("/home")
    public String home() {

        log.error("Hi ! We have an Error. Hello World");

        return "Hello World ----spring-boot-log4j2";
    }
}

注意:如果 IDEA 报错(找不到 log),IDEA 设置中添加 Lombok 插件,即可。

参考资料:

Original: https://www.cnblogs.com/xishuai/p/spring-boot-log4j2.html
Author: 田园里的蟋蟀
Title: Spring Boot 使用 Log4j2

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/540445/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • java中使用ReentrantLock实现线程安全

    如下代码: class Window4 implements Runnable { private int ticket=100; //1、先定义一个变量 private Reen…

    Java 2023年5月29日
    064
  • 浏览器上写代码,4核8G微软服务器免费用,Codespaces真香

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 一图胜千言 先上图,下面是欣宸在自…

    Java 2023年6月8日
    084
  • SpringBoot集成Swagger

    一、swagger简介 1、前后端分离开发 2、简介 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的Web 服务 官网:https:/…

    Java 2023年5月30日
    077
  • java实现设置Excel下拉框

    在使用Excel的时候用到了下拉框,实现的效果如下↓ 在生成excel文件时,需要根据给出的下拉框选项列表动态生成下拉框。实现代码如下: private void createSe…

    Java 2023年6月5日
    0100
  • TypeScript(5)类、继承、多态

    前言 对于传统的 JavaScript 程序我们会使用 函数和 基于原…

    Java 2023年6月9日
    092
  • Linux

    1、关机命令 命令 说明 sync 将数据由内存同步到硬盘中 shutdown 关机 shutdown -h 10 10分钟后关机 shutdown -h now 立马关机 shu…

    Java 2023年6月15日
    069
  • IDEA 无法显示 Run Dashboard 的解决方法

    前言 最近开始接触微服务的项目,项目很多有时候本地调测需要启动多个项目,看到同事都是使用dashboard管理项目,服务和端口排列的整整齐齐。但是我dashboard里面啥都没有,…

    Java 2023年6月5日
    067
  • java中abstract关键字(抽象类)

    需求 当父类某个方法,需要声明,但是又不确定如何实现时,可以用抽象方法,那么这个类就是抽象类 例如:父类是一个动物类,父类里面有很多方法,其中有一个方法是吃食物,但是不知道吃什么,…

    Java 2023年6月6日
    099
  • Spring(二)——IOC

    控制反转,把对象创建和对象之间的调用过程,交给 Spring 进行管理 目的:降低耦合度 xml 解析、工厂模式、反射 IOC接口 BeanFactory:IOC 容器基本实现,是…

    Java 2023年6月16日
    078
  • LeetCode.1217-交换芯片(Play with Chips)

    这是小川的第421次更新,第454篇原创 今天介绍的是 LeetCode算法题中 Easy级别的第 270题(顺位题号是 1217)。There are some chips, a…

    Java 2023年6月5日
    073
  • java MongoDB查询(二)复杂查询

    在上篇《java MongoDB查询(一)简单查询》中我们简单了解了下查询,但是仅仅有那些查询是不够用的,还需要复杂的查询,这篇就这点进行叙述。 1、数据结构 集合:firstCo…

    Java 2023年6月7日
    0107
  • Hyperledger Fabric 2.x Java区块链应用

    一、说明 在上一篇文章中 《Hyperledger Fabric 2.x 自定义智能合约》 分享了智能合约的安装并使用 cli 客户端进行合约的调用;本文将使用 Java 代码基于…

    Java 2023年6月6日
    094
  • PHP(基本语法)PHP中的Session-登录案例

    文件结构: config.php: php /**1、数据库服务器 */ define(‘DB_HOST’,’localhost’); /**2、数据库用户名 */ define(…

    Java 2023年5月30日
    079
  • SpringBoot+MybatisPlus+Mysql+Sharding-JDBC分库分表实践

    在实际业务中,单表数据增长较快,很容易达到数据瓶颈,比如单表百万级别数据量。当数据量继续增长时,数据的 查询性&a…

    Java 2023年6月6日
    071
  • SpringBoot自定义注解失效原因(2022-10-3)

    长话短说,我负责的是一个多模块项目,接手的时候没有注意 @ComponentScan 注解的扫描范围,所以打包的时候,没有扫到我新加包。所以,重点检查下 @ComponentSca…

    Java 2023年6月9日
    060
  • 为什么要使用String.intern()

    最近在阅读《深入理解Jav虚拟机》的运行时常量池章节,看到”java语言并不要求常量池一定只有编译器才能产生…运行期间也可以将新的常量放入常量池,这种特性被…

    Java 2023年6月7日
    068
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球