使用Log4J2时,我应该编写SLF4J或Log4J2 API吗?

Nat*_*ati 2 logging slf4j apache-commons-logging log4j2

什么被认为是更好的做法?如果我编写SLF4J代码,是否可以获得所有Log4J2的好处?它会影响性能吗?以上所有问题对JCL也有同样的答案吗?

rgo*_*ers 7

作为Log4j 2上的开发人员,我当然有偏见.如果您使用Markers并过滤它们,我会推荐Log4j而不是SLF4J.SLF4J与标记有一些并发问题.如果你想利用Log4j支持记录Messages而不是Strings,那么当然你必须使用Log4j的API.如果要使用printf样式API进行日志记录,则必须使用Log4j API.如果要使用Java 8 lambda表达式,则必须使用Log4j API.

OTOH,如果您对SLF4J API非常满意并且不想要任何其他功能,那么使用它的性能成本应该是最小的.

我还应该注意,可以写入Log4j 2 API并将其路由到SLF4J.

  • 关键是即使您的应用程序使用Log4j 2 API,您也不一定要绑定到Log4j 2实现:您仍然可以在不更改应用程序代码的情况下切换到另一个日志记录实现. (2认同)