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

问题描述:

时不时地,我遇到的代码看起来像这样运行:Java日志记录:它是日志还是日志记录器?

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

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

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

理由使用logger代替log

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

    1. 方法调用可读性

    原因:在记录器可用的方法通常被命名为info()error()等等。因此,log.error()成为在“记录此错误”出声所讲的命令类似的东西,而logger.error()看起来更像是它会报告上记录器本身的错误,根本谈不上什么logger.debug()听起来像。

所以,现在的问题。有没有第三种方法来命名那个麻烦的记录器?你在项目中使用什么,为什么?

+0

'log'只有一半长,这对我来说是一个杀手锏。无论如何,绝对不是一个有害的问题。 –

+1

不是一个建设性的问题。 – dharam

+0

其实我认为这是一个公平的问题,关于编码风格。我的意见:使用'log',如果是静态的'LOG'。 – vikingsteve

是否有甚至命名那个讨厌的记录仪第三种选择?

你可以称它为任何你喜欢的。即使lumberjack,如果它让你感到高兴。

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

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

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


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

+2

“伐木工人”+1 –