配置log4j-nosql时出错

时间:2016-02-03 18:36:10

标签: 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>
  <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。我不知道接下来会尝试什么。有人可以帮忙吗?

2 个答案:

答案 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