【发布时间】:2017-06-06 22:57:48
【问题描述】:
目前,我正在与
- log4j 2.7;
- springframework 4.3.5;
- 休眠 5.2.3。
我通过 xml 文件配置 log4j。
为此,我创建了一些附加程序,其中一个名为“General”。
我需要的是所有日志都必须转到该附加程序(包括由 springframework 或 hibernate 生成的那些),并且后者都没有打印在控制台上(我仍然需要来自其他类的其他日志)。
我尝试编写这些记录器:
<Loggers>
<Logger name="org" level="ALL" />
<Root level="ALL" additivity="false">
<AppenderRef ref="General"/>
</Root>
<Logger name="tests" level="ALL" additivity="false">
<AppenderRef ref="console"/>
<AppenderRef ref="General"/>
</Logger>
</Loggers>
关键是,除了 springframework 之外的所有包都通过该 appender 正确记录,springframework 仍然登录控制台并且不通过“General” appender 写入任何行。我该如何解决这个问题?
编辑:我发现这可能是因为 springframework 似乎使用其他库(logback、slf4j 和类似库)进行日志记录。我还读到 springboot 可以配置为使用 log4j,由于我对 Spring 及其库仍然不太了解,我不知道如何获得我想要的结果。
【问题讨论】:
-
我不确定 log4j XML 元素是否大写(例如
logger,而不是Logger),<appender-ref>中也有破折号 -
@fabienbk,从这个角度来看,一切似乎都正常工作,正如您在此处看到的 (logging.apache.org/log4j/2.x/manual/appenders.html)。关键是只有一个库似乎看不到我的配置,而另一个库可以。
-
哦,我的错!确实是 log4j 2。您在控制台中从 spring 中观察到了什么日志语句?
-
@fabienbk,目前我看到所有 springframework 日志,例如“10:32:07.326 [main] DEBUG oscore.env.StandardEnvironment - 添加 [systemProperties] PropertySource 以最低搜索优先级” .而且,它们太多了,几乎让我看不到我制作的那些。我根本不想删除它们的原因是,将它们移动到一个文件中,我仍然可以使用它们进行调试,但前提是我想这样做。
标签: java spring hibernate logging log4j2