Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置log4j nosql时出错_Java_Mongodb_Log4j_Log4j2 - Fatal编程技术网

Java 配置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

我正在尝试设置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相关的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>