在 Java 代码中的 apache log4j 中创建自定义日志级别,Logger.log() 方法签名与官方文档不同



我已经经历了这个问题:

如何在 Log4j 中添加自定义日志记录级别

以及此处的官方 log4j 文档:

https://logging.apache.org/log4j/2.x/manual/customloglevels.html

我的代码中没有log4j.xml,我正在尝试在Java代码本身中实现它。但是,在这样做时,我遇到了一个问题,即 Logger.log(( 方法的签名与写入的签名不同。

根据文档,如果我编写这段代码,我将获得一个自定义日志级别,我将能够在代码的其他部分使用它:

final Level CUSTOM = Level.forName("CUSTOM", 550);
final Logger logger = LogManager.getLogger();
logger.log(CUSTOM, "a custom message");

根据Javadocs(https://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/Logger.html(,Logger.log((方法也接受Level对象作为其第一个参数。我已经在我的项目中导入了以下Maven依赖项,因为此功能仅从版本2.x开始受支持:

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>

我也尝试过这个依赖关系:

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j</artifactId>
<version>2.13.0</version>
</dependency>

但是效果是一样的,那就是当我尝试编写记录器.log((代码时,Intellisense告诉我,此方法唯一支持的版本是那些包含优先级对象作为第一个参数的版本,而不是Level。如果我尝试强行包含 Level 对象,则会出现编译错误。请告诉我哪个 Maven 依赖项会给我所需的 Level 对象作为 logger.log(( 方法的第一个参数。

根据这一点,你需要两个依赖项

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.13.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.3</version>
</dependency>
</dependencies>

相关内容

最新更新