mongodb驱动程序 - 如何使用log4j隐藏调试日志记录?

时间:2015-05-16 13:50:33

标签: java mongodb maven logging log4j

Mongo java驱动程序从v3.x.x开始是冗长的,存储这样的日志日志并不是最佳选择。想隐瞒其中一些。

以下是我的依赖项(maven / pom.xml)

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.0.1</version>
</dependency>

 <!-- LOGS -->
  <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-api</artifactId>
     <version>1.7.5</version>
  </dependency>
  <dependency>
     <groupId>log4j</groupId>
     <artifactId>log4j</artifactId>
     <version>1.2.17</version>
  </dependency>    
  <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>jcl-over-slf4j</artifactId>
     <version>1.7.5</version>
  </dependency>
  <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>jul-to-slf4j</artifactId>
     <version>1.7.5</version>
  </dependency>
  <dependency>
     <groupId>org.slf4j</groupId>
     <artifactId>slf4j-log4j12</artifactId>
     <version>1.7.5</version>
  </dependency>

我想隐藏mongo java驱动程序日志:

2015-05-16 10:43:22 023 DEBUG command:56 - Sending command {count : BsonString{value='skydatas'}} to database rizze on connection [connectionId{localValue:2, serverValue:9}] to server 127.0.0.1:27017
2015-05-16 10:43:22 041 DEBUG command:56 - Command execution completed
2015-05-16 10:43:22 042 DEBUG command:56 - Sending command {count : BsonString{value='skydatas'}} to database rizze on connection [connectionId{localValue:2, serverValue:9}] to server 127.0.0.1:27017
2015-05-16 10:43:22 060 DEBUG command:56 - Command execution completed


2015-05-16T10:49:34.448Z DEBUG Checking status of 127.0.0.1:27017 |   | cluster:56
2015-05-16T10:49:34.452Z DEBUG Updating cluster description to  {type=STANDALONE, servers=[{address=127.0.0.1:27017, type=STANDALONE, roundTripTime=1,3 ms, state=CONNECTED}] |   | cluster:56

由于

3 个答案:

答案 0 :(得分:1)

您应该可以从log4j配置文件中执行此操作。

我要做的第一件事是暂时将完全限定的类名添加到log4j appender格式(%C,如果你正在使用基于PatternLayout的格式化程序)。这将为您提供要排除的日志记录语句源的包和类名。

然后按照log4j manual中的示例,专门提高您不希望看到的包/类的日志记录级别(在页面中搜索文本,从下面的代码段中查找文本更多背景信息):

# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

如果您排除了所有不想看到的套餐,请不要忘记将%C从您的模式中删除。

答案 1 :(得分:0)

这是一个log4j配置,我正在使用log4j:

# Log4J logger file
log = ./log4j
log4j.rootLogger = WARN, CONSOLE
log4j.logger.com.rizze.db=INFO


# Direct log messages to stdout
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss SSS} %-5p %m / %c{1}:%L %n

这项工作是做什么的 - 为包com.rizze.db显示级别为&gt; = INFO的日志 - 显示其他日志级别&gt; = WARN

答案 2 :(得分:0)

这对我有用。

将此行添加到log4j配置中以解决此问题。

log4j.logger.org.mongodb.driver=ERROR