【问题标题】:How to turn off MarkLogic Java API logging?如何关闭 MarkLogic Java API 日志记录?
【发布时间】:2017-01-11 21:39:06
【问题描述】:

通过 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();

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

提前致谢!

【问题讨论】:

    标签: java marklogic


    【解决方案1】:

    您引用的文档部分是不相关的——它是您可以使用的不同类型的日志记录。

    您看到的是 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>
    

    【讨论】:

    • 感谢您的解释。我能够通过 log4j.properties 文件配置 com.marklogic.client.io.DOMHandle 的日志记录。
    【解决方案2】:

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

    “stopLogging”调用不会根据文档中的内容执行任何操作:

    “如果调用当前未记录的管理器,则不会发生任何事情,甚至不会出现错误或异常。”

    【讨论】:

    • 我试过了,但没有运气。我注意到在 github 上发布的 MarkLogic Java API 中他们正在检查是否启用了记录器。 public void write(OutputStream out) throws IOException { try { if (logger.isInfoEnabled()) logger.info("Serializing DOM document to output stream"); Logger 是这样创建的:static final private Logger logger = LoggerFactory.getLogger(DOMHandle.class); 这是整个班级的链接:github.com/marklogic/java-client-api/blob/…
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-07
      • 2012-03-02
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多