项目中启用Log4j2日志框架

在实际的项目开发中,日志十分重要,无论是记录运行情况还是定位线上问题,都离不开对日志的分析。日志记录了系统行为的时间、地点、状态等相关信息,能帮助我们了解并监控系统状态,并在发生错误或者接近某种危险状态时能够及时提醒我们处理,同时在系统产生问题时,能够帮助我们快速的定位、诊断并解决问题。

Apache Log4j2是一个开源的日志记录组件,被广泛使用。使用起来非常方便,并且代替了 System.out 等打印语句。是目前一个非常流行的日志工具。

Log4j2主要的组成结构:

(1)优先级

日志信息的优先级从高到低有** TRACE < DEBUG < INFO < WARN < ERROR < FATAL**

TRACE:追踪,最低的日志级别,相当于追踪程序的执行

DEBUG:调试,一般的开发中,都将其设置成最低的日志级别

INFO:信息,输出重要的信息,使用较多

WARN:警告,输出警告的信息

ERROR:错误,输出错误信息

FATAL:严重错误

这些级别分别用来指定这条日志信息的重要程度;级别高的会自动屏蔽级别低的日志,也就是说,设置了WARN的日志,则INFO、DEBUG的日志级别的日志不会显示

(2)目的地

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

(3)格式

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

引入Log4j2依赖

复制代码
<!--log4j2的依赖-->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.19.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j2-impl</artifactId>
    <version>2.19.0</version>
</dependency>

日志的配置文件

在类的根路径下提供log4j2.xml配置文件(文件名固定为:log4j2.xml,文件必须放到类根路径下。)

配置文件格式如下

bash 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <loggers>
        <!--
            level指定日志级别,从低到高的优先级:
                TRACE < DEBUG < INFO < WARN < ERROR < FATAL
                trace:追踪,是最低的日志级别,相当于追踪程序的执行
                debug:调试,一般在开发中,都将其设置为最低的日志级别
                info:信息,输出重要的信息,使用较多
                warn:警告,输出警告的信息
                error:错误,输出错误信息
                fatal:严重错误
        -->
        <root level="DEBUG">
            <appender-ref ref="spring6log"/>
            <appender-ref ref="RollingFile"/>
            <appender-ref ref="log"/>
        </root>
    </loggers>

    <appenders>
        <!--输出日志信息到控制台-->
        <console name="spring6log" target="SYSTEM_OUT">
            <!--控制日志输出的格式-->
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss SSS} [%t] %-3level %logger{1024} - %msg%n"/>
        </console>

        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
        <File name="log" fileName="d:/spring6_log/test.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>

        <!-- 这个会打印出所有的信息,
            每次大小超过size,
            则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,
            作为存档-->
        <RollingFile name="RollingFile" fileName="d:/spring6_log/app.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="50MB"/>
            <!-- DefaultRolloverStrategy属性如不设置,
            则默认为最多同一文件夹下7个文件,这里设置了20 -->
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>
    </appenders>
</configuration>

使用日志

bash 复制代码
public class Log4jTest {

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

    @Test
    public void testLog() {
        logger.info("手动输出了日志的信息....");
    }
}
相关推荐
Hello.Reader11 小时前
PyFlink TableEnvironment 创建方式、核心 API、作业执行、UDF 与依赖、Catalog 管理与容错配置
log4j
风送雨1 天前
八周Python强化计划(八)
开发语言·python·log4j
_OP_CHEN1 天前
【测试理论与实践】(八)吃透测试分类(下):阶段 + 执行 + 组织 + 地域,测试全维度分类指南
自动化测试·软件测试·测试开发·安全·log4j·测试开发工程师·测试分类
小代码20164 天前
loki 环境搭建
spring boot·docker·log4j·grafana
企鹅侠客4 天前
第07章—实战应用篇:List命令详解与实战(下)
windows·redis·log4j·list
小肖爱笑不爱笑6 天前
Maven
java·log4j·maven
垚森9 天前
【问题解决】关于log4j与logback依赖冲突的解决方案
log4j·logback·问题解决·依赖冲突
GA6666669 天前
2026 年自托管 Wiki 推荐:为什么选择 PowerWiki
人工智能·log4j·blog·wiki
cike_y11 天前
Mybatis之分页的实现&日志工厂&Log4j详解
数据库·log4j·mybatis
Lisonseekpan12 天前
RBAC 基于角色的访问控制模型详解与实践指南
java·服务器·网络·后端·spring·log4j