0

当您slf4j-api-x.x.x.jar在运行时类路径上有 SLF4J 的 API jar ( ) 和绑定时,您可以使用如下代码:

Logger logger = LoggerFactory.getLogger(getClass());
logger.debug("Some debug message");

SLF4J 是否方便Logger地为您缓存实例(基于指定的类),还是Logger每次都返回一个新实例?

例如,如果我有:

Logger logger1 = LoggerFactory.getLogger(Widget.class);
Logger logger2 = LoggerFactory.getLogger(Widget.class);
Logger logger3 = LoggerFactory.getLogger(Widget.class);
logger1.debug("Some debug message");

记录器( 和 )是否logger1都是logger2相同logger3的实例/内存引用,或者它们是 3 个单独的记录器实例,都配置为代表Widget类进行记录?

4

3 回答 3

1

是的,SLF4J 确实在记录器上执行缓存。

于 2013-08-26T16:09:51.857 回答
0

这三个都应该是对同一个对象的引用。请注意,使用logger1 == logger2.

于 2013-08-26T16:03:37.640 回答
0

你可以很容易地自己测试。只需检查 logger1 == logger2 == logger3。如果 Logger 是一个实例控制的类,它缓存并重用其实例,则引用将指向同一个对象。相反,如果它每次都返回一个新的记录器,那么您的检查将返回 false。

于 2013-08-26T16:03:46.753 回答