记录器是否应为私有静态

记录器是否应为私有静态,第1张

记录器是否应为私有静态

非静态形式的优点是,您可以像下面的(抽象)基类中声明它,而不必担心会使用正确的类名:

protected Log log = new Log4JLogger(getClass());

但是,其缺点显然是将为该类的每个实例创建一个全新的记录器实例。这本身可能并不昂贵,但会增加大量开销。如果您想避免这种情况,请改用

static
表格。但是它的缺点是,您必须在每个单独的类中声明它,并在每个类中都要注意在记录器的构造过程中使用了正确的类名,因为
getClass()
不能在静态上下文中使用它。但是,在普通的IDE中,您可以为此创建一个自动完成模板。例如
logger
+
ctrl+space

另一方面,如果您通过工厂获得记录器,而该记录器又可能会缓存已经实例化的记录器,则使用非静态形式不会增加太多开销。例如Log4j为此具有一个

LogManager

protected Log log = LogManager.getLogger(getClass());


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5615503.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存