最牛逼的 Java 日志框架,性能无敌,横扫所有对手

}

这种 Supplier + Lambda 的形式,等同于上面的先判断 isDebugEnable 然后打印,三行的代码变成了一行。嗯,真香。

更简化的配置


Log4j 2 同时支持XML/JSON/YML/Properties 四种形式的配置文件,不过最主流的还是XML的方式,最直观。(搜索公众号Java知音,回复“2021”,送你一份Java面试题宝典)

来看一下logback和log4j2的配置文件对比,同样功能的配置下:

logback.xml

<?xml version="1.0" encoding="UTF-8"?>

logs/app.log

logs/archives/app-%d{yyyy-MM-dd}.log.gz

1 GB

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>

<Configuration xmlns:xi=“http://www.w3.org/2001/XInclude”

status=“warn” name=“XInclude”>

在log4j2中,appender的配置从使用 Appender 实现名即标签名的形式,语法上更简洁一些:

与其他日志抽象/门面适配


log4j2 由于拆分为 API 和 实现两部分,所以可能也需要和其他日志框架进行适配

a7e14b2580d1f445134ccc89bb8ab4ae.png

其他的特点


  • 异步队列使用高性能队列 - LMAX Disruptor

  • Appender丰富,有JMS/JPA/KAFKA/Http/MONGODB/CouchDB/Socket/Script等各种Appender的支持

  • 支持自定义日志级别 ……

基本用法


终于介绍完了Log4j2的强大,现在来介绍下Log4j2的基本使用。

引用log4j2的maven依赖

log4j-api在log4j-core中已经有依赖了,直接依赖core即可

org.apache.logging.log4j

log4j-core

2.14.1

注意,引用log4j2时,需要注意项目中是否有多套日志框架共存/冲突,需要适配的问题。细节请参考上面的与其他日志抽象/门面适配

配置文件示例

首先是配置文件,默认的配置文件路径为:classpath:log4j2.xml(推荐使用xml)

<?xml version="1.0" encoding="UTF-8"?>

<Configuration xmlns:xi=“http://www.w3.org/2001/XInclude”

status=“warn” name=“XInclude”>

XML配置文件语法

<?xml version="1.0" encoding="UTF-8"?>;

value

<filter  … />

<appender … >

<filter  … />

<filter  … />

创建Logger

直接使用log4j2的api:

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

Logger logger = LogManager.getLogger(Log4j2Test.class);

logger.error(…);

logger.warn(…);

logger.info(…);

logger.debug(…);

logger.trace(…);

如果是配合slf4j使用也是可以的,只需要按照前面说的,提前做好适配,然后使用slf4j的api即可。不过如果是新系统的话,建议直接上log4j2的api吧,可以享受所有log4j2的功能,使用slf4j之类的api时,上面说的参数格式化之类的功能就无法使用了。

全异步配置(重要!!)

推荐配置log4j2 全异步(all async),在你的启动脚本中增加一个系统变量的配置:

-Dlog4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector

总结

Log4j2 如今性能最强,功能最强,而且持续更新维护。还在等什么?是时候替换你的logback/log4j1了!

推荐文章

1、一款高颜值的 SpringBoot+JPA 博客项目

2、超优 Vue+Element+Spring 中后端解决方案

3、推荐几个支付项目!
4、推荐一个 Java 企业信息化系统

最后总结我的面试经验

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

BAT面试经验

实战系列:Spring全家桶+Redis等

其他相关的电子书:源码+调优

面试真题:

人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

[外链图片转存中…(img-DEH8z9Zu-1714727866767)]

BAT面试经验

实战系列:Spring全家桶+Redis等

[外链图片转存中…(img-c7TG5odg-1714727866768)]

其他相关的电子书:源码+调优

[外链图片转存中…(img-K8XpVlQy-1714727866768)]

面试真题:

[外链图片转存中…(img-pqyc8H6J-1714727866768)]

[外链图片转存中…(img-xt6JxI7W-1714727866769)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值