百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

如何在Spring Boot中使用Log4j日志框架

ztj100 2024-12-26 17:43 13 浏览 0 评论

Spring Boot是目前Java领域比较流行的一个应用程序开发框架,默认情况下使用的是SLF4J和Logback作为日志框架,但是在某些场景下,我们可能需要用到Log4j或Log4j2来满足一些特定的需求,下面我们就来看看如何在Spring Boot中集成和使用Log4j日志框架

为什么选择 Log4j 或 Log4j 2?

Log4j也是一个比较强大的日志框架,提供了较为灵活的日志级别配置,并且支持了各种的日志输出目标配置,例如可以输出到控制台、文件、数据库等。并且在Log4j中还支持了异步的日志记录功能,可以利用这些异步执行操作可以在一定程度上提高系统日志的记录性能。

集成 Log4j 的步骤

Log4j 2 是 Log4j 的改进版本,所以这里以Log4j 2为例进行演示,首先就需要在POM文件中添加Log4j 2的配置依赖,并且排除掉Spring Boot的默认日志框架,如下所示。

<dependencies>
    <!-- Exclude Spring Boot 默认日志框架 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
        <scope>provided</scope>
    </dependency>

    <!-- 引入 Log4j 2 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
</dependencies>

接下来,就是在项目的src/main/resources目录下创建Log4j 2的配置文件,命名为log4j2.xml,内容如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!-- 控制台输出 -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        
        <!-- 文件输出 -->
        <File name="File" fileName="logs/app.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>

    <Loggers>
        <!-- Root Logger -->
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Root>
    </Loggers>
</Configuration>

我们可以通过<Root level="info"> 标签来修改全局的日志级别,在Log4j 2中支持了如下的一些日志级别配置。OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL。

使用 Log4j API

在代码中,可以通过如下的方式来使用Log4j 2中的API操作来执行日志记录。

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

@RestController
public class DemoController {
    private static final Logger logger = LogManager.getLogger(DemoController.class);

    @GetMapping("/log")
    public String logExample() {
        logger.info("This is an INFO message");
        logger.debug("This is a DEBUG message");
        logger.error("This is an ERROR message");

        return "Logging example executed!";
    }
}

运行 Spring Boot 应用程序后,可以检查以下内容以确保日志配置生效

  • 控制台是否输出日志信息。
  • 指定的日志文件(如 logs/app.log)是否生成并记录了日志。

如果同时引入了多个日志框架,可能会导致冲突。确保在 pom.xml 中排除了不需要的日志依赖。

总结

通过上面的操作,我们就可以在Spring Boot项目中集成Log4j 2日志框架,并且通过Log4j 2提供的强大的日志记录功能和灵活的配置,可以帮助我们更加高效地管理和调试应用程序。

相关推荐

Win10预览版10532已知问题汇总(微软win11正式版已知问题一览)

IT之家讯微软已向Insider用户推送了Win10预览版10532更新,本次更新对右键菜单、《Windows反馈》应用以及Edge浏览器进行了改进。除此之外还包含一些Bug,汇总如下,有意升级Wi...

Gabe Aul正测试Win10 Mobile 10532,Insider用户还需等

IT之家讯本月中旬微软向Insider用户推送了Win10Mobile预览版10512,该版本修复了一些Bug,增强了系统稳定性,但依然存在一些问题。今天,微软Insider项目负责人GabeAu...

微软开始推送Win10预览版10532快速版更新

8月28日消息,刚才,微软推送了Win10Build10532快速版,修复了之前的Bug,并带来了三项改进。主要来说,这次的更新改进了右键菜单的UI,使其更具Modern风格(见上图)。此外,更新...

Win10预览版10532更新内容大全(windows10更新预览版)

IT之家讯今天凌晨微软向Insider用户推送了Win10预览版10532快速版更新,本次更新主要带来了三处改进,汇总如下:o改进右键菜单,外观更加Modern。这是基于网友要求界面一致的反馈做出...

无法升级Win10预览版10532?也许Hyper-V在搞鬼

根据IT之家网友的反映,安装了微软虚拟机Hyper-V的Win10预览版用户无法成功升级Build10532版本,安装过程中会被要求回滚系统。很多朋友在尝试关闭虚拟机之后重启安装程序,结果仍然无法顺...

Win10预览版10532界面兴起“酷黑”风潮

Win10预览版10532的界面改动还是较为明显的,主要体现在右键菜单上面。总体来看,该版本的右键菜单间距更宽,视觉上更大气,操作上更便于触控。具体来说,任务栏右键菜单的变化最为明显。除了增加选项的宽...

Win10预览版10532上手图集(windows10预览版下载)

IT之家讯8月28日,微软今天推送了Win10预览版10532快速版更新,在该版本中,微软主要是加强细节上调整,并且主要是增强Edge浏览器性能等。在Windows10预览版10532中,微软改进了...

Win10预览版10532上手视频亮点演示

IT之家讯8月28日消息,今天凌晨微软向WindowsInsider快速通道用户推送了Win10预览版10532。在Windows10预览版10532中,微软改进了右键菜单,外观更加现代化。另外还...

第二篇 前端框架Vue.js(vue前端框架技术)

前端三大核心是网页开发的基础,Vue则是基于它们构建的“生产力工具”。通俗理解就是HTML是化妆的工具如眉笔,CSS是化妆品如口红,JavaScript是化妆后的互动,而Vue就是化妆助手。有了化妆工...

基于SpringBoot + vue2实现的旅游推荐管理系统

项目描述...

基于Vue以及iView组件的后端管理UI模板——iview-admin

介绍iView-admin是一套后端管理界面模板,基于Vue2.0,iView(现在为ViewUI)组件是一套完整的基于Vue的高质量组件库,虽然Github上有一套非常火的基于ElementUI...

别再说你会SPA开发了,这5个核心你真的搞懂了吗?

前言此spa非彼spa,不是你所熟知的spa。你所熟知的spa作者肯定是没有你熟悉的。我们这里指的是在前端开发中的一种模型,叫作单页应用程序,顾名思义,就是整个项目只有一个页面,而页面中的内容是动态的...

React.js Top20面试题(react.js中文官网)

概述作为React开发者,对框架的关键概念和原则有扎实的理解是很重要的。考虑到这一点,我整理了一份包含20个重要问题的清单,每个React开发者都应该知道,无论他们是在面试工作还是只是想提高技能。...

美媒:特朗普签署行政令后,FBI又发现约2400份、总计超14000页涉肯尼迪遇刺案文件

来源:环球时报新媒体1月23日特朗普下令公布肯尼迪遇刺案相关机密文件图源:美媒综合福克斯新闻网和Axios网站10日报道,在总统特朗普签署行政令,要求公布“肯尼迪遇刺案”相关政府机密文件之后,美国...

2021 年 Node.js 开发人员学习路线图

Node.js自发布以来,已成为业界重要破局者之一。Uber、Medium、PayPal和沃尔玛等大型企业,纷纷将技术栈转向Node.js。Node.js支持开发功能强大的应用,例如实时追踪...

取消回复欢迎 发表评论: