一文搞懂 Java 日志记录(Log4j/Log4j2)

您所在的位置:网站首页 loggerlogger 一文搞懂 Java 日志记录(Log4j/Log4j2)

一文搞懂 Java 日志记录(Log4j/Log4j2)

2024-04-18 20:47| 来源: 网络整理| 查看: 265

1. 概要

日志记录为故障排除、调试、监控、性能分析、使用情况分析、合规性、安全性和审核提供了不可缺少的参考。Log4J 是一个流行的开源日志框架,用 Java 编写。各种基于 Java 的应用程序广泛使用 Log4j。此外,它是线程安全的、快速的,并提供了一个命名的 Logger 层次结构。Log4j 在开源 Apache 软件许可证下分发。

Log4j 1.x 于 2015 年 8 月 5 日结束生命周期,Log4j2 是 Log4j 的升级版本。

本文讨论了最流行的 Java 日志框架 Log4j 2 以及它的前身 Log4j,并给出了一些 log 使用建议。

2. Log4j2.1 Log4j API

Log4j API 提供了一种机制,可以根据各种优先级传递日志记录信息,并将其定向到各种目的地,例如文件、控制台、数据库等。它还支持在将日志事件传递给 loggers 或 apenders 之前对进行过滤。

2.2 Log4j 组件

Log4j 有三个主要组件——loggers、appender 和 layouts ——它们可以一起使用,以在所需的目的地打印自定义的日志语句。

1)Logger

Logger 对象负责展现日志记录信息。它是 Log4j 架构中的第一个必须层。Logger 类在包 org.apache.log4j 中定义。

通常,我们为每个应用类创建一个 Logger 实例来记录属于该类的重要事件。此外,我们通常使用接受类名作为参数的静态工厂方法在类的开头创建此实例:

private static final Logger logger = Logger.getLogger(JavaClass.class.getName());

随后,我们可以使用 Logger 类的各种方法来记录或打印重要事件,具体取决于它们的类别。这些方法是 trace()、debug()、info()、warn()、error()、fatal()。这些方法确定日志记录请求的级别。

Logger 方法的优先级顺序为:TRACE < DEBUG < INFO < WARN < ERROR < FATAL(建议只使用加粗的四个等级)。这些方法会根据 log4j.properties 文件中设置的 logger 级别打印日志消息。比如:如果我们将记录器级别设置为 INFO,则将记录所有优先级 >= INFO 的事件,即 INFO、WARN、ERROR 和 FATAL 事件。

2)Appender

Appender 表示日志输出的目标。我们可以使用 Log4j 将日志打印到多个偏好的目的地,例如控制台、文件、远程 socket 服务器、数据库等。我们将这些输出目标称为 Appender。此外,我们可以将多个 appender 附加到一个 Logger。

Appender 有一个可加性规则:任何 Logger 的日志语句的输出都将转到其所有追加者及其祖先(层次结构中较高的追加者)。

3)Layout

我们使用 Layout 来自定义日志语句的格式。我们可以通过将 Layout 与已定义的 appender 相关联来做到这一点。因此,Layout 和 appender 的组合有助于我们将格式化的日志语句发送到所需的目的地。

2.3 log4j.properties文件

我们可以使用 XML 或 properties 文件配置 Log4j。log4j.properties 文件将配置存储在键值对中。

log4j 属性配置文件的默认名称是 log4j.properties。Logger会在 CLASSPATH 中查找此文件名。如果我们需要使用不同的配置文件名,则可以使用系统属性 log4j.configuration 进行设置。

log4j.properties 文件包含 appender 的规范、它们的名称、类型以及布局模式。它还包含有关默认根Logger、及其日志级别的规范。

2.4 log4j.properties 文件的语法

在通用的 log4j.properties 文件中,我们定义了以下配置:

根 logger 及其级别,还有 appender 的名称。将一个有效的 appender 分配给定义的 appender 名称。为已定义的 appender 定义布局、目标、级别等。# 具有 appender 名称的根Logger log4j.rootLogger = DEBUG, MYAPD # 为MYAPD 分配有效的 appender,其中MYAPD 是 Appender 的名称。 # 我们可以将多个 appender 附加到 Logger 以将日志定向到不同的目的地。 log4j.appender.MYAPD = org.apache.log4j.FileAppender # 定义 MYAPD 的布局 log4j.appender.MYAPD.layout=org.apache.log4j.PatternLayout log4j.appender.MYAPD.layout.conversionPattern=%m%n 2.5 示例

首先,您需要将 Log4j 库添加到您的项目 pom.xml:

log4j log4j 1.2.17

1)示例程序

import org.apache.log4j.Logger; public class Log4jExample { private static Logger logger = Logger.getLogger(Log4jExample.class); public static void main(String[] args) throws InterruptedException { for(int i = 1; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3