Thi*_*ilo 29 java logging mongodb
我是否可以配置MongoDB Java驱动程序以输出有用(用于调试)消息,理想情况下使用标准日志框架之一?我主要感兴趣的是看到每个查询结果,收到了多少数据以及花了多长时间,以及任何错误代码.
thk*_*ala 23
在加载任何MongoDB Java驱动程序类之前,您需要设置几个系统属性:
// Enable MongoDB logging in general
System.setProperty("DEBUG.MONGO", "true");
// Enable DB operation tracing
System.setProperty("DB.TRACE", "true");
Run Code Online (Sandbox Code Playgroud)
执行此操作后,驱动程序将使用标准Java日志记录框架来记录消息.
不幸的是,据我所知,从Java驱动程序代码来看,日志记录粒度并不是那么好 - 例如,您无法有选择地记录特定集合上的操作.
AsS*_*iDe 22
任何人仍然面临新版mongodb驱动程序3.x的这个问题?
在log4j.properties中为mongo驱动程序包定义一个记录器
log4j.logger.org.mongodb.driver=INFO
Run Code Online (Sandbox Code Playgroud)
com.mongodb已更改为org.mongodb.
eri*_*oco 16
另一种设置MongoDB日志级别的方法:
import java.util.logging.Logger;
Logger mongoLogger = Logger.getLogger( "com.mongodb" );
mongoLogger.setLevel(Level.SEVERE); // e.g. or Log.WARNING, etc.
Run Code Online (Sandbox Code Playgroud)
在使用任何驱动程序类之前,您不必执行此操作,您可以随时设置/更改日志级别.
小智 8
以下系列适用于我,
import java.util.logging.Logger;
import java.util.logging.Level;
Logger mongoLogger = Logger.getLogger( "org.mongodb.driver" );
mongoLogger.setLevel(Level.SEVERE); // e.g. or Log.WARNING, etc.
Run Code Online (Sandbox Code Playgroud)
要使用 3.6 MongoDB Java 驱动程序或更高版本记录所有查询:
确保您使用的是 slf4j
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.29</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
或者如果您使用的是 log4j2
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.13.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)将日志记录级别设置org.mongodb.driver为DEBUG
因此,对于 log4j2,您需要将类似的内容添加到 xml 配置文件中
<logger name="org.mongodb.driver" level="DEBUG"></logger>
Run Code Online (Sandbox Code Playgroud)按照其他答案中的建议将日志级别设置为 INFO 或 SEVERE 级别对我来说不起作用。根据MongoDB 规范, 如果 slf4j 不存在,则
驱动程序将回退到 JUL (java.util.logging)
这是大多数其他答案使用的,所以也许使用不同的日志级别(虽然我无法想象是这样的情况)
| 归档时间: |
|
| 查看次数: |
27525 次 |
| 最近记录: |