我有一个 java 应用程序,它使用 morphia 与 mongodb 一起工作。
我想将发送到 mongodb 的所有查询记录在一个文件中,我可以分析它们以提高性能。但我找不到记录它们的方法。
我知道 mongodb 可以将查询记录在
system.profile
集合中,但我仍然想要一个日志文件。
如何做到这一点?
你使用SLF4J还是Logback/Log4J?将 Morphias 的 SLF4JExtension 添加到您的 CLASSPATH。
然后只需启用
com.google.code.morphia
记录器并在任何您想要的地方记录它。
我在 Java MongoDB 驱动程序(版本 3.9.1)之上使用 Morphia(版本 1.3.2),并且我能够通过将
org.mongodb.morphia
记录器级别设置为 trace
来启用实际查询日志记录(使用 Log4j2) 。也就是说,在我的log4j2.xml
:
<Loggers>
...
<Logger name="org.mongodb.morphia" level="trace" />
...
</Loggers>
使用
Wildfly
部署,我通过将以下内容添加到 stadalone.xml
来成功启用 Morphia 日志记录:
<server xmlns="urn:jboss:domain:15.0">
<profile>
<subsystem xmlns="urn:jboss:domain:logging:8.0">
<logger category="org.mongodb.morphia" use-parent-handlers="true">
<level name="TRACE"/>
<handlers>
<handler name="FILE"/>
</handlers>
</logger>
</subsystem>
</profile>
</server>