如何关闭 MarkLogic Java API 日志记录?

How to turn off MarkLogic Java API logging?

通过 Java API:

将文件上传到 MarkLogic 数据库时,我无法关闭像这样的 MarkLogic 日志消息
16:24:01.599 [main] INFO  com.marklogic.client.io.DOMHandle - Serializing DOM document to output stream

我遵循了 MarkLogic Java API 文档中有关日志记录 MarkLogic Java API documentation 的信息。以下是我如何初始化数据库客户端和 xmlDocMgr:

databaseClient = DatabaseClientFactory.newClient(marklogicHost, marklogicPort, marklogicUser, password, Authentication.DIGEST);

ByteArrayOutputStream out = new ByteArrayOutputStream();
RequestLogger logger = databaseClient.newLogger(out);
logger.setEnabled(false);

xmlDocMgr = databaseClient.newXMLDocumentManager();
xmlDocMgr.stopLogging();

我做错了什么?如何禁用日志消息?

提前致谢!

根据文档,我相信您需要先调用 "xmlDocMgr.startLogging(logger)",这将向 xmlDocMgr 注册 RequestLogger。

根据文档中的内容,"stopLogging" 调用没有执行任何操作:

"If called on a manager not currently logging, nothing happens, not even an error or exception."

您引用的文档部分与此无关——它是您可以使用的另一种日志记录。

您看到的是 MarkLogic Java API 使用 SLF4J 进行日志记录,您应该使用首选的日志记录框架对其进行配置。在当前版本 (3.0.6) 中,我们包括自动启用您所看到的日志记录的 logback。我们从未来的版本中删除了 logback,因为它并不是真正需要的,SLF4J 的理念是允许您选择您喜欢的日志记录框架。

无论如何,假设你想保留 logback。将名为 "logback.xml" 的文件添加到您的类路径,并将级别设置为 "WARN",如以下建议内容所示:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="WARN">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

我在 POM 中注释掉了以下部分以禁用日志输出。

<!--        <dependency>
        <groupId>com.marklogic</groupId>
        <artifactId>java-client-api</artifactId>
        <version>3.0.6</version>
    </dependency>-->