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

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对象方法的调用执行过程详解

    下面是“Java对象方法的调用执行过程详解”的完整攻略: 1. 对象方法的定义 在 Java 中,我们可以通过在类中定义方法来实现对类的操作。方法是类中定义实现某种操作的代码块,它可以带有参数,也可以返回值。定义方法的语法如下: 修饰符 返回类型 方法名(参数列表) { // 方法体 } 修饰符可以是 public、private 或 protected 等…

    Java 2023年5月26日
    00
  • 字符编码的处理和BeanUtils组件使用详解

    字符编码的处理攻略 在Web应用程序开发中,我们经常需要处理字符编码,以保证在不同的操作系统和浏览器下,都能正确地显示和处理中文等特殊字符。 了解字符编码 在处理字符编码之前,我们需要了解一些相关知识。常见的字符编码有以下几种: ASCII码,包含128个字符,不支持中文等特殊字符。 ISO-8859编码,包含了欧洲常见的语言字符,但不支持中文等特殊字符。 …

    Java 2023年5月20日
    00
  • java实现科学计算器的全过程与代码

    Java实现科学计算器的全过程与代码 本攻略将为您详细讲解Java实现科学计算器的完整过程,涵盖了设计、实现和测试。 设计 在设计科学计算器之前,我们需要先了解需求和功能。在这里,我们将实现一款基本的科学计算器,包括以下功能: 加、减、乘、除 平方、开方 对数、三角函数 常量π和e 接下来,我们将对应的功能拆分为模块,然后设计相应的类和方法。 功能模块 加减…

    Java 2023年5月18日
    00
  • hibernate和mybatis对比分析

    文本格式要求: 标题使用#号表示,#号数量表示标题等级,一级标题一个#号,二级标题二个#号,以此类推 代码块使用三个反引号括起来,并标明代码语言 Hibernate和MyBatis对比分析 什么是Hibernate? Hibernate是一个基于Java的ORM框架,即对象关系映射框架。它可以将Java类映射到关系型数据库中的表,使得Java程序员可以使用面…

    Java 2023年5月19日
    00
  • java编程实现简单的网络爬虫示例过程

    下面是Java编程实现简单的网络爬虫示例过程的完整攻略。 一、什么是网络爬虫 网络爬虫(英文名:Web Crawler),也叫网络蜘蛛,是一种自动抓取万维网信息的程序或者脚本,通过程序模拟浏览器行为获取网页信息。网络爬虫是搜索引擎的核心技术之一,搜索引擎通过它获取互联网信息并建立索引。 二、网络爬虫的基本原理 网络爬虫的基本原理是使用HTTP或者HTTPS协…

    Java 2023年5月18日
    00
  • SpringMVC实现文件的上传和下载实例代码

    SpringMVC实现文件的上传和下载实例代码 在Web应用程序中,文件的上传和下载是非常常见的需求。SpringMVC提供了很多方便的方式来实现文件的上传和下载。本文将详细讲解SpringMVC实现文件的上传和下载的实例代码。 文件上传 在SpringMVC中,我们可以使用MultipartFile对象来处理文件上传。MultipartFile对象是Spr…

    Java 2023年5月18日
    00
  • java中Struts2 的文件上传和下载示例

    Java中Struts2提供了方便的文件上传和下载的功能。下面将详细讲解文件上传和下载的示例。 文件上传示例 文件上传需要使用Struts2中的文件上传拦截器。详细步骤如下: 第一步:引入依赖 在项目的pom.xml文件中添加以下依赖: <dependency> <groupId>commons-fileupload</grou…

    Java 2023年5月20日
    00
  • 详解Spring MVC如何测试Controller(使用springmvc mock测试)

    以下是关于“详解Spring MVC如何测试Controller(使用springmvc mock测试)”的完整攻略,其中包含两个示例。 详解Spring MVC如何测试Controller(使用springmvc mock测试) Spring MVC是一个基于Java的Web框架,它可以帮助我们快速开发Web应用程序。在开发过程中,我们需要对Control…

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