如何快速搜索工程是否使用Log4j2

1,040 阅读1分钟

背景:

北京时间12月9号深夜,Apache Log4j2被曝出一个高危漏洞,攻击者通过jndi注入攻击的形式可以轻松远程执行任何代码。随后官方紧急推出了2.15.0和2.15.0-rc1新版本修复,依然未能完全解决问题,现在已经更新到2.15.0-rc2。该漏洞被命名为Log4Shell,编号CVE-2021-44228。

官网漏洞介绍

logging.apache.org/log4j/2.x/i…

搜索方法

1、jar包搜索

没用maven的项目: 搜索项目依赖jar是否有:log4j-core-*.jar log4j-api-*.jar
使用maven项目:

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

2、配置文件搜索

一般文件名称为:log4j2.xml ,注意啊 是log4j2.xml 不是log4j.xml

常规配置:
- <configuration status="WARN" monitorInterval="30"
- <appenders> 
- <console name="Console" target="SYSTEM_OUT"> 
- <PatternLayout

3、代码搜索

org.apache.logging.log4j.LogManager;
Logger logger2 = LogManager.getLogger(Test.class);

附:顺手搜索了下Loj4J 和 Log4J 2的区别

log4j2和log4j是一个作者,只不过log4j2是重新架构的一款日志组件,他抛弃了之前log4j的不足,以及吸取了优秀的logback的设计重新推出的一款新组件,具体区别如下

1. jar包名不一样:

<!-- Log4J-->
<dependency> 
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>***</version>
</dependency>

<!-- Log4J2-->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>***</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>***</version>
 </dependency>

2. 配置文件不一样

Log4j: 使用的是 log4j.properties

Log4j2: 使用的是 log4j2.xml或者json

3. 代码调用

Log4j: 
org.apache.log4j.Logger;
Logger logger = Logger.getLogger(Test.class)

Log4j2: 
org.apache.logging.log4j.LogManager;
Logger logger2 = LogManager.getLogger(Test.class);