Java 配置log4j nosql时出错
我正在尝试设置log4j nosql,但始终出现以下错误:Java 配置log4j nosql时出错,java,mongodb,log4j,log4j2,Java,Mongodb,Log4j,Log4j2,我正在尝试设置log4j nosql,但始终出现以下错误: ERROR appenders contains an invalid element or attribute "NoSql" 我的log4j.xml文件如下所示: <?xml version="1.0" encoding="UTF-8"?> <configuration status="trace"> <properties> </properties> <appe
ERROR appenders contains an invalid element or attribute "NoSql"
我的log4j.xml文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="trace">
<properties>
</properties>
<appenders>
<NoSql name="mongo">
<MongoDb databaseName="xxxx" collectionName="log" server="localhost"
writeConcernConstant="UNACKNOWLEDGED" />
</NoSql>
</appenders>
<loggers>
<root level="warn">
<appender-ref ref="mongo"/>
</root>
</loggers>
</configuration>
我的POM包含以下与log4j相关的ARTIFACTS:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-nosql</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>${mongo-driver.version}</version>
</dependency>
org.apache.logging.log4j
log4japi
${log4j.version}
org.apache.logging.log4j
log4j型芯
${log4j.version}
org.apache.logging.log4j
log4j-slf4j-impl
${log4j.version}
org.apache.logging.log4j
log4jcl
${log4j.version}
org.apache.logging.log4j
log4j-1.2-api
${log4j.version}
org.apache.logging.log4j
log4j nosql
${log4j.version}
org.mongodb
mongo java驱动程序
${mongo driver.version}
我已经试用了log4j的2.2和2.3版本,以及MongoDB驱动程序的2.11.3、2.12.3和2.13.0版本
构建成功,我的jar文件正确执行。但是我总是得到一个错误,说“NoSql”不是一个有效的追加器(这个问题顶部引用了这个错误)。我在log4j.xml上运行xmllint,没有发现任何错误。我验证了我包含了正确的配置文件(例如,如果我指定了RollingFile appender,它就会工作)。我已经解压缩了我编译的jar,并验证它是否包含log4j-nosql.jar。我不知道下一步该做什么。有人能帮忙吗?这是一个已知的错误,在某些情况下会发生。检查一下,他们修好了。也许你需要更新你的jar,我也遇到了同样的问题,通过添加以下API解决了这个问题:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.1</version>
</dependency>
参考资料:本文中的修复程序适用于2.0-rc2版本中的更改,该版本更改了包装,将NoSql appender从核心分离到一个单独的jar,即log4j NoSql。我已经将其添加到pom.xml中,但仍然存在错误。我还发现了一个错误,它解决了未经身份验证的MongoDB连接的问题。我已经将log4j版本更新为2.4,并尝试了2.5。我还尝试添加身份验证,但在检查我的mongodb.log文件时,我注意到log4j甚至没有尝试连接。我的配置似乎有问题,尽管我不知道那可能是什么。
<Appenders>
<NoSql name="databaseAppender">
<MongoDb databaseName="DB name" collectionName="collection name"
server="localhost:27017" username="user name" password="DB password" />
</NoSql>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="databaseAppender" />
</Root>
</Loggers>