1

我时不时地遇到如下代码:

private final Logger log = LoggerFactory.getLogger(MyClass.class);

假设这是一个slf4j记录器对象。如果使用Apache Commons Logging,甚至会调用该类Log而不是Logger.

我一直在考虑这个问题,并列出了以下两个选项的一些优点/缺点:

logger使用而不是的原因log

  1. 目的:它是日志的编写者,而不是日志本身。
  2. Misleadinglog是一个固有的误导性名称,因为无法读取日志。

log使用而不是的原因logger

  1. 方法调用可读性:Logger 上可用的方法通常被命名info()error()等等。因此,log.error()类似于“记录此错误”中大声说出的命令,而logger.error()看起来更像是在记录器本身报告错误,更不用说logger.debug()听起来像什么了。

所以,现在的问题。是否还有第三种选择来命名那个讨厌的 Logger?您在项目中使用什么,为什么?

4

1 回答 1

4

是否还有第三种选择来命名那个讨厌的 Logger?

你可以称它为任何你喜欢的名字。甚至lumberjack,如果它能让你感到快乐1

您在项目中使用什么,为什么?

我使用当前正在使用的日志框架给出的类名。这些天来,我倾向于使用 SLF4J 日志外观库,以便可能重用我的代码的人不会受到我选择的日志记录的阻碍。

我倾向于log用作实例变量的名称,或者LOG如果它是static final. 为什么?因为1)它是传统的,2)它的字符更少。无论哪种方式,读者都会很快了解我在代码中使用的约定。


1 - 这几乎总结了我对这个问题的看法......

于 2013-05-22T10:12:46.643 回答