当前位置:网站首页>Log4j2基本使用
Log4j2基本使用
2022-08-10 05:41:00 【clear0217】
Log4j2基本使用
Log4j2简介
log4j2是log4j 1.x 的升级版,2015年5月,Apache宣布log4j1.x 停止更新。最新版为1.2.17。
log4j2参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:
1、异常处理:在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。
2、性能提升:log4j2相较于log4j 1和logback都具有很明显的性能提升。
3、自动重载配置:参考了logback的设计,提供自动刷新参数配置,可以动态的修改日志的级别而不需要重启应用。
4、无垃圾机制,log4j2在大部分情况下,都可以使用其设计的一套无垃圾机制,避免频繁的日志收集导致的jvm gc。
1.Jar包依赖
直接依赖
在Maven的父工程pom.xml添加如下依赖:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.12.1</version>
</dependency>
</dependencies>
</dependencyManagement>
使用bom管理依赖
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>2.12.1</version>
<scope>import</scope>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
然后在使用Log4j2的子工程pom.xml添加如下依赖,
这样就不用写具体的版本号了,
保证项目的子工程都使用相同版本的Log4j2。
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</dependency>
</dependencies>
在复杂场景下,可能不止依赖上面两个jar包,
这种方法可以保证Log4j2模块之间的版本一致。
2.测试代码
为了演示Log4j2的功能,创建如下的测试类:
package org.apache.logging.log4j;
public class Log4j2Test {
private static Logger LOG = LogManager.getLogger(Log4j2Test.class);
public static void main(String[] args) throws Exception {
// 一直打印日志,用于测试Log4j2功能
while (true) {
logAll();
}
}
// 打印各种级别的日志用于测试
public static void logAll() throws Exception {
LOG.trace("trace level log");
LOG.debug("debug level log");
LOG.info("info level log");
LOG.error("error level log");
LOG.fatal("fatal level log");
// 设置休眠时间(单位ms),控制日志打印速度
Thread.sleep(3);
}
}
3.打印日志
运行上面的测试程序,
在控制台打印出如下日志:
ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
11:33:08.438 [main] ERROR org.apache.logging.log4j.Log4j2Test - error level log
11:33:08.440 [main] FATAL org.apache.logging.log4j.Log4j2Test - fatal level log
可以看到ERROR报错了,没有找到Log4j2的配置文件,
使用了默认配置,只打印error级别日志到console控制台,
然后控制台输出了error和fatal两个级别的日志信息。
4.日志级别
Log4j2共有8种日志级别,
按照优先级从小到大排序:
ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
边栏推荐
- Unity血条跟随对象
- 请亲们关注下我,谢谢了。
- ArgumentException: GetComponent requires that the requested component ‘GameObject‘ derives from Mono
- A*Pathfinding插件(3D)
- webSocket教程
- markdown使用技巧
- 网页安全证书错误但无法安装证书的解决办法
- Parallax Mapping: More Realistic Texture Detail Representation (Part 1): Why Use Parallax Mapping
- 全网可达并设备加密
- 【论文解读】滴滴智能派单-KDD2018 Large-Scale Order Dispatch in On-Demand Ride-Hailing
猜你喜欢

Talking about 3 Common Shadow Rendering Techniques in Games (3): Shadow Mapping

虚幻5简单第三人称游戏制作文档

Talking about 3 common shadow rendering techniques in games (2): shadow cone

如何在VMlogin中设置YiLu代理?

Mysql表数据在命令行窗口下中文乱码问题解决方法

进制的前缀表示和后缀表示

不同场景如何使用动态代理?

Unity插件DOTween使用指南2(简释贝塞尔曲线)

Unity plug-in DOTween User Guide 2 (Brief explanation of Bezier curves)

背包问题 c语言版
随机推荐
Unity2d自动寻路(AI插件)
Analysis of minix_super_block.s_ninodes of mkfs.minix.c
NetKeeper(创翼)开WIFI方法——2018.5
Win32屏幕坐标转换Qt坐标
21天学习挑战赛--字符串切割
markdown类图学习
Teach you to change the kernel source code--sysfs virtual file system 1
UnityShader入门精要-unity shader基础
How is C# hot update better than Lua?
制作一个启动软盘并用bochs模拟器启动
什么是代理ip?市面上好用的代理软件有哪些
工业废酸回收工艺
Ingress Controller performance test(1)
关于Qt高频率信号槽合并的误解和方案
初学者也能看懂的Ray March体积云
Myunity框架笔记
动态规划、背包问题 6/26 116-120
21天学习挑战赛--分班
虚幻5简单第三人称游戏制作文档
markdown使用技巧