爪哇七月至SLF4J大桥
我目前观察到第三方库(即restfb)正在使用java。util。记录日志,我看到这些日志最终会出现在STDOUT中,即使我的日志中没有配置SLF4J控制台追加器。xml。我的类路径中还有jul-to-slf4j桥。安装网桥时,jul-to-slf4j网桥是否只记录到logback配置的Appender,还是也记录到stdout
你可以在下面搜索框中键入要查询的问题!
我目前观察到第三方库(即restfb)正在使用java。util。记录日志,我看到这些日志最终会出现在STDOUT中,即使我的日志中没有配置SLF4J控制台追加器。xml。我的类路径中还有jul-to-slf4j桥。安装网桥时,jul-to-slf4j网桥是否只记录到logback配置的Appender,还是也记录到stdout
# 1 楼答案
我的解决方案:
将jul-to-slf4j放在您的应用程序库或glassfish库中,这些库会将jul重定向到slf4j(在我的例子中是LOG4J)
然后,对于泽西岛,您可以执行以下操作:
最后一个配置是避免被其他记录器污染
# 2 楼答案
这个解决方案看起来不错(考虑到七月桥接的情况),对我来说很有效,因为我只需要在日志中写下所有内容。groovy文件
(如果您根本没有使用logback.groovy配置或logback,当然您必须将逻辑部分放入某个类中(例如
class MyApp { static { /* log init code here */ } ... }
))src/logback。groovy:
(建议我使用,因为您可以使用Java代码变量/函数,如您在这里看到的,例如,SLF4JBridgeHandler或关于webappDirName的log dir)
(使文件保持完整,因为它给人一个更好的印象,即如何设置所有内容或将其作为起始模板)
(可能与某人有关-我的环境:slf4j 1.7.5、logback 1.1.2、groovy 2.1.9)
# 3 楼答案
如SLF4JBridgeHandler的javadocs中所述,您可以通过调用以下命令以编程方式安装SLF4JBridgeHandler:
或者通过日志记录。性质
至于性能,关于jul-to-slf4j桥的一节讨论了这个问题。本质上,因为您已经在使用logback,所以启用LevelChangePropagator应该会产生良好的性能,而不管负载如何
# 4 楼答案
我使用SLF4J和new Postgres driver 42.0.0
根据changelog它使用java。util。伐木
有驱动程序日志就足够了:
添加jul-to-slf4j bridge:
添加logback。xml(logbacktest.xml)
外接程序代码
# 5 楼答案
你需要打电话给^{} 。您还需要在java中启用根记录器的所有日志级别(原因见下面的摘录)。util。记录并删除默认控制台追加器
整个过程可以这样完成
出于性能原因,您可以将级别设置为高于finest的级别,但是如果不首先在
java.util.logging
中启用这些日志,您将无法打开这些日志(出于上述摘录中提到的原因)