log4j使用教程详解(怎么使用log4j2)

yizhihongxing

log4j使用教程详解(怎么使用log4j2)

介绍

log4j是一个Java语言的日志记录工具,可以对程序进行日志记录,允许程序员控制日志记录输出的目的地、日志记录内容等。log4j2是log4j的升级版。本文将详细讲解如何使用log4j2。

步骤

1. 引入log4j2到项目中

在工程目录下找到 pom.xmlgradle.build 文件,在文件中添加log4j2的依赖。

  • Maven

xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>

  • Gradle

groovy
dependencies {
implementation 'org.apache.logging.log4j:log4j-api:2.14.1'
implementation 'org.apache.logging.log4j:log4j-core:2.14.1'
}

2. 初始化log4j2

在工程中,创建日志配置文件并进行初始化。在 src 目录下创建 log4j2.xml 文件,具体配置可根据需要更改。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
        </Console>

        <RollingFile name="RollingFile"
                     fileName="./logs/rolling.log"
                     filePattern="./logs/$${date:yyyy-MM}/rolling-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout>
                <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n</pattern>
            </PatternLayout>
            <Policies>
                <OnStartupTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="10 MB"/>
                <TimeBasedTriggeringPolicy modulate="true"/>
            </Policies>
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
</Configuration>

创建一个Java类,用来测试log4j2是否初始化成功,代码如下:

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

public class TestLog4j2 {
    private static final Logger logger = LogManager.getLogger(TestLog4j2.class);

    public static void main(String[] args) {
        logger.info("log4j2 initialized successfully.");
    }
}

运行 main 方法,控制台输出 log4j2 initialized successfully. 表示初始化成功。

3. 使用log4j2进行日志输出

在代码中加入日志,通过 Logger 的不同方法输出日志。

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

public class TestLog4j2 {
    private static final Logger logger = LogManager.getLogger(TestLog4j2.class);

    public static void main(String[] args) {
        logger.debug("debug log");
        logger.info("info log");
        logger.warn("warn log");
        logger.error("error log");
        logger.fatal("fatal log");
    }
}

在控制台输出的日志中,日志级别低于 info 的日志不会被输出,可以看到如下输出结果:

2021-07-22 16:38:52 INFO  TestLog4j2:9 - info log
2021-07-22 16:38:52 WARN  TestLog4j2:10 - warn log
2021-07-22 16:38:52 ERROR TestLog4j2:11 - error log
2021-07-22 16:38:52 FATAL TestLog4j2:12 - fatal log

4. 输出到指定文件

除了控制台,我们可以通过配置,在指定的文件中输出日志。配置中已经有一个输出到文件的 Appender,文件名为 rolling.log,存储在当前工程目录下的 logs 文件夹内。每天会自动新建一个以日期为名的日志文件,并且保留20个日志文件。

可以增加一个方法,在输出日志的同时,将日志保存到文件中。

public static void logToFile() {
    for (int i = 0; i < 10; i++) {
        logger.info("log to file " + i);
    }
}

运行 logToFile() 方法,可以看到输出日志的同时,在文件中也保存了日志。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:log4j使用教程详解(怎么使用log4j2) - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • java dom4j解析xml用到的几个方法

    以下是关于java dom4j解析xml用到的几个方法的完整攻略。 引言 在Java中,dom4j是一种解析XML的非常常用的框架。通过dom4j,我们可以轻松地读取和操作XML文件。在本文中,我们将介绍几个在Java中使用dom4j解析XML时可能会用到的方法。 导入dom4j 在使用dom4j之前,需要先将dom4j添加到项目中。在Maven中,可以像下…

    Java 2023年5月20日
    00
  • 使用Python脚本对Linux服务器进行监控的教程

    接下来我会详细讲解如何使用Python脚本对Linux服务器进行监控的完整攻略。 1. 确定监控内容 在开始编写Python脚本之前,需要确定要监控的内容。比如我们可以监控Linux服务器的 CPU 使用率、内存使用率、磁盘占用情况、网络连接数等等。这里以 CPU 使用率为例。 2. 安装Python 在开始编写Python脚本之前,需要确保服务器中拥有Py…

    Java 2023年5月20日
    00
  • 学习不同 Java.net 语言中类似的函数结构

    学习不同Java.net语言中类似的函数结构,可以遵循以下攻略: 第一步:了解Java.net语言中的常见函数结构 在Java.net语言中,常见的函数结构有方法的声明、方法的参数、方法的返回值等。方法的声明包括方法名、访问修饰符、返回值类型和方法的参数类型等。方法的参数包括形式参数、实际参数和默认值等。方法的返回值包括返回值类型、返回值关键字和返回值的值等…

    Java 2023年5月26日
    00
  • 分享令人目瞪口呆的 Java 代码技巧

    现在来详细讲解“分享令人目瞪口呆的 Java 代码技巧”的完整攻略。 1. 提升代码的可读性 首先,我们来谈论一下如何提升 Java 代码的可读性。 代码缩进 好的代码缩进是提升代码可读性的一种重要手段。一般来说,对于每个代码块内的语句,都应当向右缩进一个相等数量的空格,以示其属于该代码块的范畴。例如: if (condition) { // … } e…

    Java 2023年5月19日
    00
  • Java多线程模拟电影售票过程

    关于Java多线程模拟电影售票过程的攻略,可以分为以下几个步骤: 确定需求 在开始实现之前,需要首先明确需求。在本例中,我们需要模拟一个电影院售票过程。具体而言,要求程序能够模拟多个售票窗口同时对外售票,每个售票窗口需要从已有的电影票中售出一张票。当电影票售罄时,所有售票窗口需要停止售票。最后,统计每个售票窗口售出的票数以及总票数。 实现思路 在明确需求之后…

    Java 2023年5月26日
    00
  • 什么是堆区?

    以下是关于 Java 堆区的详细讲解和使用攻略: 堆区的作用是什么? Java 堆区(Heap)是一种用于存储对象实例的内存区域。堆区是线程共享的,其大小可以通过 -Xmx 和 -Xms 参数进行设置。 堆区的使用攻略 使用 Java 堆区,需要注意以下几点: 在程序开发中需要合理使用内存,避免出现内存泄漏和内存溢出等问题。 在实现自定义的类时,需要注意对象…

    Java 2023年5月12日
    00
  • SpringBoot超详细分析启动流程

    SpringBoot超详细分析启动流程 SpringBoot是一款用于快速构建Spring应用的开源框架。在使用SpringBoot时,了解其启动流程是非常有助于我们理解框架的运行机制和内部实现。 SpringBoot启动流程概述 SpringBoot启动过程分为以下几个关键步骤: 加载SpringApplication类,并创建对应的应用上下文(Appli…

    Java 2023年5月15日
    00
  • 基于Java 数组内存分配的相关问题

    关于基于Java数组内存分配的相关问题,以下是详细的攻略: 1. Java数组内存分配概述 在Java中,数组是一种非常常见的数据结构,它由一些同类型的元素组成。我们可以通过数组来存储和操作多个相同类型的数据。Java数组内存分配的问题,实际上是与Java的内存管理机制有关的。 Java中的内存管理机制有两部分,一部分是Java虚拟机(JVM)自己的内存管理…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部