我试图设置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>
<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相关的aritifact:
<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>
我已尝试过log4j的2.2和2.3版本,以及MongoDB驱动程序的版本2.11.3,2.12.3和2.13.0。
构建成功,我的jar文件正确执行。但我总是得到错误,上面写着&#34; NoSql&#34;不是一个有效的appender(在这个问题的顶部引用了错误)。我在我的log4j.xml上运行xmllint,发现没有错误。我确认我包含了正确的配置文件(例如,如果我指定了RollingFile appender,它就可以工作)。我解压缩了我编译的jar并验证它包含log4j-nosql.jar。我不知道接下来会尝试什么。有人可以帮忙吗?
答案 0 :(得分:0)
这是在某些情况下发生的已知错误。检查this他们修复了它。也许你需要更新你的罐子
答案 1 :(得分:0)
我也遇到了同样的问题,并通过添加以下API解决了这个问题:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.8.1</version>
</dependency>
在log4j2.xml
中查看我用于使用Log4J2 API的NoSQL配置的以下XML:
<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>
参考:https://logging.apache.org/log4j/2.0/manual/appenders.html#NoSQLAppender