4 java logging log4j slf4j java.util.logging
SLF4J(1.7.5,但实际上是任何现代版本)附带了几个"over"(迁移器)JAR:
jcl-over-slf4j-1.7.5.jarlog4j-over-slf4j-1.7.5.jar......以及"to"(桥梁)JAR:
jul-to-slf4j-1.7.5.jar根据他们的文档,迁移者:
...从[JCL/log4j]轻松[s]迁移到SLF4J.此jar文件旨在作为[JCL/log4j]的替代品.它实现了[ir]公共API但在下面使用SLF4J,因此名称"over"SLF4J.
而JUL桥:
将所有传入的jul记录路由到SLF4j API.
jcl-over-slf4j-1.7.5.jar的时候我有一个记录使用JCL代码,但我想它使用SLF4J?或者是其他东西?jul-to-slf4j-1.7.5.jar什么时候用?这里的"to"一词与"over"的使用方式有何不同?dev*_*dev 11
首先,这些jar适用于项目具有不受控制的依赖项的情况,并且这些依赖项使用JUL(java.util.logging),JCL(Jakarta Commons Logging)或者log4j您希望通过所有日志记录操作进行路由这个slf4j-api.可以将它想象为用slf4j-api等价物动态替换对那些旧式日志记录apis的所有调用.
这3个罐子中的每一个都为其各自的遗留日志框架做同样的事情.在命名(差值超过 VS 来)从这个翻译完成的方式造成的.
考虑到上述问题,以下是您的问题的答案:
如果代码在您的控制之下,您也可以JCL使用正确的slf4j-api调用替换所有调用(对于任何其他遗留框架也是如此).如果源代码不受您的控制,或者您无法替换它们,则可以jcl-over-slf4j-1.7.5.jar在类路径中包含并排除 commons-logging.jar.那是因为jcl-over-slf4j-1.7.5.jar包含commons-logging.jar重写的相同类(或其子集)以将所有日志记录活动发送到slf4j-api.因此过度的名字.
jul-to-slf4j-1.7.5.jar其作品以神奇的方式略有不同-因此,以名字.JUL利用处理程序.处理程序是任何扩展java.util.logging.Handler并且旨在处理(猜测是什么)日志消息(或JUL术语中的记录)的类.所以在这种情况下,为了将所有JUL日志记录路由到slf4j-api我们只需要确保我们只注册一个这样的处理程序 - SLF4JBridgeHandler(恰好是包含在其中的唯一类jul-to-slf4j-1.7.5.jar).可以在此处找到执行此操作的配置选项.
over和to之间的区别现在应该是显而易见的.将在罐子与那些路由所有记录到替换原有罐子的非常相同的类工作slf4j-api.该JUL 到罐子并不需要做同一种类重写由于方式JUL与处理工作(和你只需要配置一个处理器,将路由所有记录到slf4j-api).
有关更多遗留说明,请查看优秀的slf4j 遗留文档,并确保查看大图(也链接到主要遗留文章).
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
710 次 |
| 最近记录: |