三步入门Log4J 的使用

server/2024/12/26 18:33:10/

本篇基于Maven 的Project项目, 快速演示Log4j 的导入和演示。

第一步: 导入Log4j依赖

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

些API来记录日志信息。log4j-api的主要作用包括:

  1. 提供日志记录接口log4j-api定义了一系列用于日志记录的接口和类,如Logger、LogManager等,这些接口和类为开发人员提供了记录日志的标准方法。
  2. 支持多种日志格式log4j-api支持使用不同的日志格式来记录日志信息,如纯文本、JSON、XML等,这可以根据应用程序的需求进行配置。
  3. 与日志实现分离log4j-api的设计使得它与具体的日志实现层(如log4j-core)分离,这样开发人员可以在不改变代码的情况下更换日志实现层,提高了代码的灵活性和可维护性。
  4. 支持Lambda表达式:在Java 8及以上版本中,log4j-api支持使用Lambda表达式来延迟评估日志消息,这可以减少不必要的日志消息构建成本,提高性能。

log4jcore_24">log4j-core的作用

log4j-core是Apache Log4j日志框架的具体实现层,它负责将日志信息输出到指定的目的地,如控制台、文件、数据库等。log4j-core的主要作用包括:

  1. 日志信息的输出log4j-core根据log4j-api提供的日志记录请求,将日志信息输出到配置的目的地。
  2. 日志级别的过滤log4j-core支持根据日志级别(如DEBUG、INFO、WARN、ERROR等)来过滤日志信息,只输出符合条件的日志信息。
  3. 日志格式的配置log4j-core允许开发人员配置日志信息的格式,包括日志的布局、时间戳、日志级别、线程信息等,以满足不同的需求。
  4. 支持异步日志记录log4j-core提供了异步日志记录的功能,可以提高日志记录的性能,特别是在多线程应用程序中。
  5. 动态配置和管理log4j-core支持在运行时动态地修改日志配置,如更改日志级别、添加或删除输出目的地等,这使得开发人员可以在不重启应用程序的情况下调整日志记录行为。

log4j2xml_34">第二步: 配置Log4j配置文件, 在src/main/resources 下新增log4j2.xml文件,

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} %l - %msg%n"/></Console></Appenders><Loggers><Root level="INFO" additivity="true"><AppenderRef ref="Console"/></Root></Loggers>
</Configuration>
  • 配置文件名是log4j2.xml, 因为目前使用的基本上都是 Log4j的 2.X版本。
  • <Configuration>元素是Log4j配置文件的根元素。status="warn"属性意味着Log4j将在内部使用WARN级别的日志记录来报告其自己的初始化过程中的问题。这有助于调试配置问题。* <Appenders>元素包含了所有日志输出目的地的定义。在这个例子中,只有一个输出目的地被定义。
  • <Console>元素定义了一个控制台输出(Appender)。name="Console"属性给这个Appender起了一个名字,target="SYSTEM_OUT"属性指定了日志将输出到标准输出流(即控制台)。
  • <PatternLayout>元素定义了日志消息的格式。pattern属性定义了具体的格式字符串,其中:
    • %-5level:日志级别,左对齐,最小宽度为5。
    • %d{yyyy-MM-dd HH:mm:ss.SSS}:日志事件的日期和时间,格式为年-月-日 时:分:秒.毫秒。
    • %l:发出日志事件的记录器的名称。
    • %msg:日志消息。
    • %n:平台相关的换行符。
  • <Loggers>元素包含了所有日志记录器(Loggers)的定义。
  • <Root>元素定义了根日志记录器。所有的日志记录器都继承自根记录器,除非另有指定。
  • level="INFO"属性设置了根记录器的日志级别为INFO,这意味着只有INFO级别及以上(WARN, ERROR, FATAL)的日志消息会被处理。
  • additivity="true"属性意味着这个记录器的日志消息除了被这个记录器的Appender处理外,还会被它的父记录器的Appender处理(在这个配置中,由于它是根记录器,这个属性实际上没有实际效果)。
  • <AppenderRef ref="Console"/>元素引用了一个Appender(在这个例子中,是之前定义的Console Appender),意味着这个记录器的日志消息将被输出到控制台。

第二步:测试, 调用日志相关的接口记录日志

public class Log4jDemo {private static Logger logger = LogManager.getLogger(Log4jDemo.class);/*** @param args*/public static void main(String[] args) { logger.debug("调试信息");logger.info("一般信息");logger.error("错误信息");}}

在VS Code中的运行结果如下:

在这里插入图片描述

因为上面的配置是输出到控制台,且日志的级别是INFO, 所以info() 和errot() 的信息会输出在控制台中。




http://www.ppmy.cn/server/147608.html

相关文章

微服务即时通讯系统(5)用户管理子服务,网关子服务

用户管理子服务&#xff08;user文件&#xff09; 用户管理子服务也是这个项目中的一个业务最多的子服务&#xff0c;接口多&#xff0c;但是主要涉及的数据表只有user表&#xff0c;Redis的键值对和ES的一个搜索引擎&#xff0c;主要功能是对用户的个人信息进行修改管理&#…

解析类漏洞:从前端数据逃逸到后端执行

导语 在网络安全领域&#xff0c;理解漏洞的根本机制是渗透测试和漏洞研究的基石。很多web top10漏洞的本质其实就是解析类漏洞。这种漏洞的核心在于利用系统解析器或引擎对特定输入数据的处理方式&#xff0c;从而实现代码执行。本文将介绍解析类漏洞的概念&#xff0c;探讨它…

Android 消息队列之MQTT的使用:物联网通讯,HTTP太重了,使用MQTT;断网重连、注册、订阅、发送数据和接受数据,实现双向通讯。

目录&#xff1a; 问题MQTT是什么以及为什么使用如何使用&#xff1a;第一阶段、基础功能如何使用&#xff1a;第二阶段、增加断网重连如何使用&#xff1a;第三阶段、封装 一、问题 在开发的时候&#xff0c;我们一般都使用Http和后台进行通讯&#xff0c;比如我们是开发物联…

无线网络技术的发展与技术

无线网络技术在过去几十年中取得了巨大的进步&#xff0c;从最初的2G到如今的5G&#xff0c;无线通信已经深刻改变了我们的生活和工作方式。 本文将详细介绍无线网络技术的演进历程和相关的技术细节&#xff0c;包括无线传输原理、频谱利用、多址技术、调制与解调技术等&#…

react 路由鉴权

权限路由一般两种 1中接口中返回菜单 2 接口中返回权限&#xff0c;前端做匹配 一般都是那种结合&#xff0c;react中没有vue那种钩子函数如何做&#xff1f; 在项目中写一个高阶函数&#xff0c;在高阶函数中判断权限、是否登录等操作app.tsx或者man.tsx中使用 《AuthRouter》…

十五、linux之搭建JavaEE环境

1 概述 如果需要在 Linux 下进行 JavaEE 的开发&#xff0c;我们需要安装如下软件 2 安装 JDK 安装步骤 mkdir /opt/jdk mkdir /opt/jdk通过 xftp6 上传到 /opt/jdk 下 cd /opt/jdk 解压 tar -zxvf jdk-8u261-linux-x64.tar.gz tar -zxvf jdk-8u261-linux-x64.tar.…

加密算法学习笔记

可逆与不可逆 可逆 对称加密与非对称加密 不可逆 解释:一旦加密就不能反向解密得到密码原文 种类: Hash散列算法, 散列算法, 摘要算法等&#xff08;哈希算法又称散列算法&#xff09; 用途&#xff1a;一般用于效验下载文件正确性&#xff0c;一般在网站上下载文件都能见到…

开发手札:Win+Mac下工程多开联调

最近完成一个Windows/Android/IOS三端多人网络协同项目V1.0版本&#xff0c;进入测试流程了。为了方便自测&#xff0c;需要用unity将一个工程打开多次&#xff0c;分别是Win/IOS/Android版本&#xff0c;进行多角色联调。 在Win开发机上&#xff0c;以Windows版本为主版…