由 log4j2 漏洞爆发引发的疑问,为什么这么多框架要引入 log4j2,不应该是仅引入 slf4j 吗

2021 年 12 月 13 日
 jiangxin

可能之前未表述清楚,我认为最好的方式应该是框架引入 slf4j ,使用框架的项目引入 log4j2 或者其他实现

这个疑问之前就产生过,一直没有真正找寻过原因,此次核弹级漏洞引发整个圈内颤抖,是时候探究一下这个疑问了

9399 次点击
所在节点    程序员
30 条回复
aliensb
2021 年 12 月 13 日
Slf4j 是门面,具体实现是 log4j2
jiangxin
2021 年 12 月 13 日
@aliensb 这个没错,但不应该是框架引入 slf4j ,使用框架的项目引入 log4j2 或者其他实现
dreamramon
2021 年 12 月 13 日
log4j2 的异步性能高啊
shyangs
2021 年 12 月 13 日
平行宇宙.

React 框架統治了 Java 王國.

你永遠都有選擇的自由.

Browserify/Grunt/Gulp/Webpack
Redux/Mobx/Recoil
Redux-saga/Dva
material/antd/bootstrap
less/sass/postcss/css in js
shyangs
2021 年 12 月 13 日
[現在的前端技術棧真的太惡心了!]( https://v2ex.ih06.com/t/821702 )
seaswalker
2021 年 12 月 13 日
看到车仔就进来了
xuanbg
2021 年 12 月 13 日
log4j 好用且性能高啊。从这次漏洞就能看得出来,log4j 真的是只有你想不到,没有他做不到呢。
hingbong
2021 年 12 月 13 日
@jiangxin 现在不就是吗,你是低估了 Java 项目的数量了
chendy
2021 年 12 月 13 日
spring-boot 如果不自己动的话是 logback
印象里只有 elasticsearch 是绑定 log4j2 的,毕竟有独立运行的需求,不能只有一个 slf4j
muooOOO
2021 年 12 月 13 日
我车已崩
fpure
2021 年 12 月 13 日
log4j 可以用 slf4j 桥接器换掉
jimmyismagic
2021 年 12 月 13 日
log4j2 性能更好,我们 springboot 项目都要它
christin
2021 年 12 月 13 日
@shyangs #4 我猜你想说 javascript ?
wineast
2021 年 12 月 13 日
奇怪的是,我们用的是默认 springboot ,理论上应该用的是 logback 。但上周排查 进行依赖扫描的时候发现 log4j-api 被 log4j-to-slf4j,然后被 spring-boot-starter-logging 引入了,还是要修
如下:
| | | +--- org.springframework.boot:spring-boot-starter-logging:2.3.6.RELEASE
| | | | +--- ch.qos.logback:logback-classic:1.2.3
| | | | | +--- ch.qos.logback:logback-core:1.2.3
| | | | | \--- org.slf4j:slf4j-api:1.7.25 -> 1.7.30
| | | | +--- org.apache.logging.log4j:log4j-to-slf4j:2.13.3
| | | | | +--- org.slf4j:slf4j-api:1.7.25 -> 1.7.30
| | | | | \--- org.apache.logging.log4j:log4j-api:2.13.3
FEINIAO233
2021 年 12 月 13 日
@wineast 只有 log4j-api 一个依赖没事的,漏洞的代码在 log4j-core 包里
kilala2020
2021 年 12 月 13 日
我也一直有这个疑惑,为什么这么整齐划一的搞 log4j2?
cheng6563
2021 年 12 月 13 日
@wineast log4j-api 没问题的,就是把 log4j 的 api 转发到 slf4j 去了,slf4j 没问题就行了。
wineast
2021 年 12 月 13 日
@FEINIAO233 感谢,客户那里用的扫描工具,都是直接扫关键词的,扫到了就要我们整改,现在还得排包
fighterhit
2021 年 12 月 13 日
@FEINIAO233 log4j-api 也只是接口吗?那最终实现调的什么?
Wien
2021 年 12 月 13 日
spring boot 本身就是开箱即用的框架,默认就有日志组件的实现。一键启动,该配的都帮你配好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/821744

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX