Log4j2不能使用json配置文件

似乎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文件夹中:

  • hamcrest-的JUnit 2.0.0.0.jar
  • 杰克逊的注解 – 2.6.1.jar
  • 杰克逊核心2.6.1.jar
  • 杰克逊 – 数据绑定 – 2.6.1.jar
  • Java的hamcrest-2.0.0.0.jar
  • 基于JUnit 4.12.jar
  • 科特林-reflect.jar
  • 科特林运行时,sources.jar
  • 科特林-runtime.jar
  • log4j的-API-2.3.jar
  • log4j的核心-2.3.jar
  • log4j的-SLF4J-IMPL-2.3.jar

您可以使用系统属性log4j.configurationFactory

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