我偶尔会遇到如下代码:
private final Logger log = LoggerFactory.getLogger(MyClass.class);
我们假设这是一个slf4j
记录器对象。如果使用Apache Commons Logging,则即使该类称为Log
而不是Logger
。
我一直在考虑这个问题,并列出了以下两个选项的一些优点/缺点:
使用logger
代替log
的原因
log
是一个固有的误导性名称,因为无法读取日志。 使用log
代替logger
的原因
info()
,error()
等。因此,log.error()
变得类似于“记录此错误”中大声说出的命令,而logger.error()
看起来更像是报告记录器本身的错误,更不用说logger.debug()
{1}}听起来像。所以,现在问题。是否还有第三个选择来命名那个讨厌的Logger?你在项目中使用了什么,为什么?
答案 0 :(得分:4)
甚至可能有第三个选项来命名那个讨厌的Logger?
你可以随意调用它。即使lumberjack
,如果它让你感到高兴 1 。
您在项目中使用了什么,为什么?
我使用我正在使用的日志框架给出的类名。这些天,我倾向于使用SLF4J日志记录外观库,以便可能重用我的代码的人不会受到我选择的日志记录的阻碍。
我倾向于使用log
作为实例变量的名称,或LOG
如果它是static final
。为什么?因为1)它是传统的,2)它是较少的字符。无论哪种方式,读者都会很快学会我在代码中使用的约定。
1 - 这只是总结了我对这个问题的看法......