Java日志记录:它是日志还是记录器?

时间:2013-05-22 10:05:16

标签: java logging naming-conventions slf4j

我偶尔会遇到如下代码:

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

我们假设这是一个slf4j记录器对象。如果使用Apache Commons Logging,则即使该类称为Log而不是Logger

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

使用logger代替log 的原因

  1. 目的:它是日志的编写者,而不是日志本身。
  2. 误导性log是一个固有的误导性名称,因为无法读取日志。
  3. 使用log代替logger 的原因

    1. 方法调用可读性:Logger上可用的方法通常命名为info()error()等。因此,log.error()变得类似于“记录此错误”中大声说出的命令,而logger.error()看起来更像是报告记录器本身的错误,更不用说logger.debug() {1}}听起来像。
    2. 所以,现在问题。是否还有第三个选择来命名那个讨厌的Logger?你在项目中使用了什么,为什么?

1 个答案:

答案 0 :(得分:4)

  

甚至可能有第三个选项来命名那个讨厌的Logger?

你可以随意调用它。即使lumberjack,如果它让你感到高兴 1

  

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

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

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


1 - 这只是总结了我对这个问题的看法......