三步入门Log4J 的使用

本篇基于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表达式来延迟评估日志消息,这可以减少不必要的日志消息构建成本,提高性能。

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支持在运行时动态地修改日志配置,如更改日志级别、添加或删除输出目的地等,这使得开发人员可以在不重启应用程序的情况下调整日志记录行为。

第二步: 配置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.mzph.cn/diannao/63041.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【强化学习入门笔记】1.5 贝尔曼最优公式

本系列为学习赵世钰老师的《强化学习的数学原理》所作的学习笔记. 课程视频网址&#xff1a;https://space.bilibili.com/2044042934 1.5.1 定义 1.5.1.1 Contraction mapping theorem (收缩映射定理) fixed point(不动点) 如果 x ∗ x^* x∗满足下式, x ∗ x^* x∗称之为…

Nmap脚本使用

Nmap是主机扫描工具&#xff0c;他的图形化界面是Zenmap&#xff0c;分布式框架为Dnamp。 Nmap可以完成以下任务&#xff1a; 主机探测端口扫描版本检测系统检测支持探测脚本的编写 Nmap在实际中应用场合如下&#xff1a;通过对设备或者防火墙的探测来审计它的安全性探测目标主…

python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250+个项目、26.6GB)

文章目录 源代码下载地址项目介绍预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 python源码实例游戏开发小程序办公自动化网络爬虫项目开发源码(250个项目、26.6GB) 预览 项目备注 1、该资源内项目代码都经过测试运行成功&#xff0c;功能ok的情…

MySql:理解数据库

目录 一、什么是数据库 第一层理解 第二层理解 第三层理解 二、Linux下的数据库 三、基本认识 登录数据库时&#xff0c; mysql -u root -h 127.0.0.1 -P 3306 -p -h指定MySql服务器所在主机&#xff0c;若在本地则为回环地址。-P表示目标主机上MySql服务端口号 一般简单…

BERT模型的输出格式探究以及提取出BERT 模型的CLS表示,last_hidden_state[:, 0, :]用于提取每个句子的CLS向量表示

说在前面 最近使用自己的数据集对bert-base-uncased进行了二次预训练&#xff0c;只使用了MLM任务&#xff0c;发现在加载训练好的模型进行输出CLS表示用于下游任务时&#xff0c;同一个句子的输出CLS表示都不一样&#xff0c;并且控制台输出以下警告信息。说是没有这些权重。…

Vue框架开发一个简单的购物车(Vue.js)

让我们利用所学知识来开发一个简单的购物车 &#xff08;记得暴露属性和方法&#xff01;&#xff01;&#xff01;&#xff09; 首先来看一下最基本的一个html框架 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

系统加固-Linux不允许用户使用密码登录,只能使用密钥登录

一、密码登录的安全隐患 传统的密码登录方式&#xff0c;尽管简单直接&#xff0c;却存在诸多安全隐患。首先&#xff0c;密码本身容易被猜测或通过暴力破解手段获得。特别是当用户设置了过于简单或常见的密码时&#xff0c;系统面临的安全风险将显著增加。其次&#xff0c;密…

大数据实验E5HBase:安装配置,shell 命令和Java API使用

实验目的 熟悉HBase操作常用的shell 命令和Java API使用&#xff1b; 实验要求 掌握HBase的基本操作命令和函数接口的使用&#xff1b; 实验平台 操作系统&#xff1a;Linux&#xff08;建议Ubuntu16.04或者CentOS 7 以上&#xff09;&#xff1b;Hadoop版本&#xff1a;3…

【Vivado】xdc约束文件编写

随手记录一下项目中学到的约束文件编写技巧。 时序约束 创建生成时钟 参考链接&#xff1a; Vivado Design Suite Tcl Command Reference Guide (UG835) Vivado Design Suite User Guide: Using Constraints (UG903) 通过Clocking Wizard IP创建的时钟&#xff08;MMCM或…

Electron + Vue 简单实现窗口程序(Windows)从零到一

前言 想做一个桌面应用程序&#xff0c;一直没有找到简单快速可上手的框架。刚好有点前端的底子&#xff0c;就发现了Electron。关于Electron的介绍&#xff0c;请移步 https://www.electronjs.org/ 查阅。 简单来说&#xff0c;引用官网的话&#xff0c;Electron是一个使用 …

健康养生生活

在快节奏的现代生活中&#xff0c;健康养生愈发成为人们关注的焦点。它不仅是一种生活方式&#xff0c;更是对生命质量的珍视与呵护。 健康养生&#xff0c;饮食为先。合理的膳食结构是维持身体健康的基石。我们应确保每餐营养均衡&#xff0c;增加蔬菜、水果、全谷物以及优质蛋…

如何避免数据丢失:服务器恢复与预防策略

在当今数字时代&#xff0c;数据对于个人和企业来说都至关重要。数据丢失可能会导致严重的财务损失、业务中断甚至法律责任。因此&#xff0c;采取措施防止数据丢失至关重要。本文将讨论服务器数据丢失的常见原因以及如何防止数据丢失的有效策略。 服务器数据丢失的常见原因 服…

网站访问统计A/B测试与数据分析

在网站运营中&#xff0c;访问统计和数据分析是优化用户体验和提高转化率的关键工具。A/B测试作为一种数据驱动的方法&#xff0c;能够帮助网站运营者验证设计和内容的有效性。A/B测试的基本原理是同时展示两个不同的版本&#xff08;A和B&#xff09;&#xff0c;通过比较它们…

芯驰X9SP与汽车麦克风-打造无缝驾驶体验

当今汽车技术的进步不仅提升了驾驶体验&#xff0c;还改变了我们与车辆互动的方式。汽车麦克风作为车内语音控制系统的重要组成部分&#xff0c;正逐渐成为现代汽车的标配。 技术原理 汽车麦克风主要依赖于声音传感技术&#xff0c;通常包括电容式麦克风和动圈式麦克风。这些…

界面控件Syncfusion Essential Studio®现在已完全支持 .NET 9

Syncfusion Essential Studio现在完全支持 .NET 9&#xff0c;可最新版本2024 Volume 3 版本中使用&#xff01;通过此更新&#xff0c;Blazor、.NET MAUI、WPF、WinForms、WinUI和ASP.NET Core 平台中的 Syncfusion 组件以及文档处理库已准备好让您利用 .NET 9 中的最新功能。…

剑指offer(专项突破)---字符串

总目录&#xff1a;剑指offer&#xff08;专项突破&#xff09;---目录-CSDN博客 1.字符串的基本知识 C语言中&#xff1a; 函数名功能描述strcpy(s1, s2)将字符串s2复制到字符串s1中&#xff0c;包括结束符\0&#xff0c;要求s1有足够空间容纳s2的内容。strncpy(s1, s2, n)…

yarn : 无法加载文件 E:\node\node_global\yarn.ps1,因为在此系统上禁止运行脚本

先确保安装了yarn —— npm install -g yarn 终端输入set-ExecutionPolicy RemoteSigned 若要在本地计算机上运行您编写的未签名脚本和来自其他用户的签名脚本&#xff0c;请使用以下命令将计算机上的执行策略更改为RemoteSigned 再去使用yarn okk~

python学opencv|读取视频(二)制作gif

【1】引言 前述已经完成了图像和视频的读取学习&#xff0c;本次课学习制作gif格式动图。 【2】教程 实际上想制作gif格式动图是一个顺理成章的操作&#xff0c;完成了图像和视频的处理&#xff0c;那就自然而然会对gif的处理也产生兴趣。 不过在opencv官网、matplotlib官网…

高校心理教育辅导|基于springBoot的高校心理教育辅导系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 随着Internet技术的发展&#xff0c;心理教育辅导系统应运而生&…

网络安全、Web安全、渗透测试之笔经面经总结(一)

本篇文章总结涉及以下几个方面&#xff1a; 一&#xff1a;对称加密非对称加密&#xff1f; 对称加密&#xff1a;加解密用同一密钥&#xff0c;密钥维护复杂n&#xff08;n-1&#xff09;/2&#xff0c;不适合互联网传输密钥&#xff0c;加解密效率高。应用于加密数据。 非…