当前位置: 首页 > 面试题库 >

Log4j2无法使用json配置文件

石正卿
2023-03-14
问题内容

似乎log4j试图通过XML解析器解析.json配置文件,但是为什么呢?

我通过命令行参数设置log4j配置文件:

-Dlog4j.configurationFile=src/log4j2.json

文件内容:

{
    "configuration": {
        "appenders": {
            "Console": {
                "name": "Console",
                "target": "SYSTEM_OUT",
                "PatternLayout": {
                    "pattern": "%date %thread %logger %message"
                }
            }
        },
        "loggers": {
            "root": {
                "level": "debug",
                "appender-ref": {
                    "ref": "Console"
                }
            }
        }
    }
}

我得到的是:

[Fatal Error] log4j2.json:1:1: Content is not allowed in prolog.
ERROR StatusLogger Error parsing D:\Dev\HDelphiCrawler\src\log4j2.json org.xml.sax.SAXParseException; systemId: file:///D:/Dev/HDelphiCrawler/src/log4j2.json; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)
    at org.apache.logging.log4j.core.config.xml.XmlConfiguration.<init>(XmlConfiguration.java:140)
    at org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory.getConfiguration(XmlConfigurationFactory.java:44)
    at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:410)
    ....and so on...
ERROR StatusLogger No logging configuration

我的lib文件夹中的Jar:

  • hamcrest-junit-2.0.0.0.jar
  • jackson-annotations-2.6.1.jar
  • Jackson core-2.6.1.jar
  • jackson-databind-2.6.1.jar
  • java-hamcrest-2.0.0.0.jar
  • junit-4.12.jar
  • kotlin-reflect.jar
  • kotlin-runtime-sources.jar
  • kotlin-runtime.jar
  • log4j-api-2.3.jar
  • log4j-core-2.3.jar
  • log4j-slf4j-impl-2.3.jar

问题答案:

您可以使用system属性log4j.configurationFactory

-Dlog4j.configurationFactory=org.apache.logging.log4j.core.config.json.JsonConfigurationFactory


 类似资料:
  • 我正在尝试在我的Geb框架中设置log4j2。就我的一生而言,我不知道如何把这些结合起来。我有一个log4j2。使用记录器“Selenium”设置xml(不是log4j.xml)文件。在DefaultPage中,我尝试从配置文件。 log4j2.xml DefaultPage.groovy 测试执行并将输出写入STDERR,这是预期的,因为我有记录器。错误但是,它不支持日期的格式。此外,我还使用其

  • 我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放

  • 我将log4j2与一个JSON属性文件一起使用,我将其命名为log4j2。json并尝试添加Kafka追加器。有很多使用旧格式或xml的示例,但很难在JSON中获得正确的格式。这很可能是一个愚蠢的问题,但我一直在努力让它发挥作用,在任何地方都找不到任何例子。我很想放弃在json中配置log4j2,转而使用XML,但我觉得这应该相当简单。 这是一个用XML定义的示例kafka appender。 l

  • 这是我的配置文件: 日志配置文件读起来非常清楚,因为它使用my/log目录中定义的模式正确地写入。 这是我在代码中实例化它的方式:

  • 我是Elasticsearch用户,我必须使用log4j2.properties文件。不幸的是,我不能让它像我想要的那样删除日志。 null 我尝试使用路径条件“ifany”,在这篇log4j2文档中进行了描述:https://logging.apache.org/log4j/2.x/manual/appenders.html 下面是我的log4j2.properties文件: 当前,当我重新启动

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