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