当前位置: 首页 > 知识库问答 >
问题:

在Intellij和Kotlin中找不到Log4j2配置

章晗日
2023-03-14

我用Gradle和静态编程语言DSL构建脚本构建了一个新的IntelliJ项目,只有静态编程语言(Java)和java版本10.0.2作为项目SDK。

我将log4j的依赖项添加到build.gradle.kts:

compile("org.apache.logging.log4j:log4j-api:2.11.1")
compile("org.apache.logging.log4j:log4j-core:2.11.1")

我把一个log4j2.yaml文件放入 /src/main/resources进行了一些配置。

当我现在运行这个测试程序时:

import org.apache.logging.log4j.LogManager

fun main(args: Array<String>) {
    val logger = LogManager.getLogger()!!

    logger.warn("Warn")
    logger.info("Info")
    logger.debug("Debug")
}

我没有得到日志输出,但是收到了这个消息

ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2

如何让log4j2工作?

这是我到目前为止所做的:

  • 我检查了log4j2配置是否被复制到构建目录并包含在类路径中
  • 我通过classloader成功地读取了资源文件。getResource(“log4j2.yaml”)
  • 我尝试了一个xml配置文件

共有2个答案

利思源
2023-03-14

如果有人正在使用maven.请添加下面的依赖项到项目。

<dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-yaml</artifactId>
        <version>2.10.4</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.10.4</version>
    </dependency>
屠嘉勋
2023-03-14

事实证明,如果您想使用YAML配置文件,这些依赖项是不够的。此外,还需要:

compile("com.fasterxml.jackson.core:jackson-databind:2.9.4")
compile("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.9.4")

在将这些需求纳入构建之后。格雷德尔。kts,日志记录按预期工作。

 类似资料:
  • 最近,我决定学习如何使用log4j2记录器。我下载了所需的jar文件,创建了库,xml编译文件,并尝试使用它。不幸的是,我在console(Eclipse)中得到了这样的语句: 这是我的测试类代码: 和我的xml配置文件: 我还尝试使用不带标记的xml,以及包规范和各种文件夹/包目录,但没有帮助。现在我的文件直接位于Eclipse的project文件夹中。

  • 我已经看了所有其他对此的反应,但它们似乎不适用于我。 https://kotlinlang.org/api/latest/kotlin.test/kotlin.test/ 我正在尝试从暂存文件或.kt文件访问它,并且它不在下拉列表中以选择它。 项目正在使用JDK 15。

  • 错误StatusLogger找不到log4j2配置文件。使用默认配置:只将错误记录到控制台。将系统属性“org.apache.logging.log4j.simplelog.statuslogger.level”设置为TRACE,以显示Log4j2内部初始化日志记录。 解决此问题的方法: 2.增加内容

  • 我已经将其隔离到一个非常简单的测试项目中,该项目除了简单的log4j2test配置使用之外没有其他用途。文件目录结构: 建筑sbt: log4j2.xml内容复制/粘贴从示例在官方留档:https://logging.apache.org/log4j/2.x/manual/configuration.html SimpleMain。斯卡拉: 我跑步与 输出:

  • 我们添加了使用log4J 2的库。X,但我们仍在使用log4J 1。X(主要是因为我们有自己的一些应用程序和记录仪)。我被告知解决方案是发送log4J 2。x到slf4j(使用log4j-to-slf4j,版本2。X),然后slf4j到log4J 1。X,使用slf4j-log4j12,版本1。X. 这就是我刚才所做的,但我仍然得到以下信息: ERROR StatusLogger未找到log4j2

  • 我们已经添加了使用log4j2.x的库,但是我们仍然在使用log4j1.x(主要是因为我们有自己的一些附加程序和记录器的impl)。我被告知,解决方案是将log4j2.x发送到slf4j(使用log4j-to-slf4j,版本2.x),然后将slf4j发送到log4j1.x,使用slf4j-log4j12,版本1.x。 这就是我刚才所做的,但我仍然得到这样的信息: 我希望slf4j使用log4J