You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Log4j中PropertyConfigurator已不存在?日志输出异常排查

问题根源:Log4j 1.x 与 Log4j 2 的版本混淆

你遇到的所有问题,本质都是代码用了Log4j 2的API,但配置文件和依赖逻辑还是Log4j 1.x的一套,两者完全不兼容,具体拆解如下:

1. 日志级别输出异常 + 无日志文件生成的原因

你的Java代码里用的是Log4j 2的核心类:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

但你的log4j.properties是纯Log4j 1.x的配置格式(比如log4j.rootLogger、org.apache.log4j.RollingFileAppender这些前缀)。Log4j 2根本不识别这种配置,所以会自动启用默认控制台配置——而默认配置只输出ERROR和FATAL级别,自然看不到DEBUG/INFO/WARN,也不会生成日志文件。

2. PropertyConfigurator不存在的原因

PropertyConfigurator是Log4j 1.x里用来加载配置的类,Log4j 2已经彻底移除了这个类,改用全新的配置加载机制,所以你会找不到它。


解决方案:统一为Log4j 2的配置与依赖

第一步:替换配置文件为Log4j 2格式

把你的log4j.properties改名为log4j2.properties,内容替换为Log4j 2的格式:

# 全局日志级别
rootLogger.level = DEBUG
# 关联的appender
rootLogger.appenderRefs = stdout, file
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.file.ref = FILE

# 控制台输出配置
appender.stdout.type = Console
appender.stdout.name = STDOUT
appender.stdout.layout.type = PatternLayout
appender.stdout.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# 文件输出配置
appender.file.type = RollingFile
appender.file.name = FILE
appender.file.fileName = C:\\logging.log
appender.file.filePattern = C:\\logging-%d{MM-dd-yyyy}-%i.log.gz
appender.file.layout.type = PatternLayout
appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.file.policies.type = Policies
appender.file.policies.size.type = SizeBasedTriggeringPolicy
appender.file.policies.size.size = 10MB
appender.file.strategy.type = DefaultRolloverStrategy
appender.file.strategy.max = 10

第二步:调整配置文件位置

确保log4j2.properties放在项目的classpath根目录:

  • 如果是普通Java项目,放到projectFolder/src/main/resources/下(没有这个目录就新建)
  • 编译后要保证它在target/classes(或bin)目录下,确保Log4j 2能加载到。

第三步:确认依赖(如果用构建工具)

如果是Maven项目,确保你的pom.xml里是Log4j 2的依赖:

<dependencies>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.20.0</version> <!-- 可替换为最新稳定版 -->
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.20.0</version>
    </dependency>
</dependencies>

Gradle的话:

dependencies {
    implementation 'org.apache.logging.log4j:log4j-api:2.20.0'
    implementation 'org.apache.logging.log4j:log4j-core:2.20.0'
}

第四步:代码无需修改

你的Java代码是Log4j 2的正确写法,不需要改动,配置调整后就能正常输出所有级别日志,同时生成指定的日志文件。


内容的提问来源于stack exchange,提问作者lololo wote

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:39:49