我只想知道在java中声明logger变量的最佳方法是哪种。 以下是一些声明。
1> private static final Logger logger = Logger.getLogger(ServiceImpl.class);
2> private static Logger logger = Logger.getLogger(ServiceImpl.class);
3> private static final Logger LOGGER= Logger.getLogger(ServiceImpl.class);
4> private static Logger LOGGER= Logger.getLogger(ServiceImpl.class);
如果有人知道另一种声明looger变量的最佳替代方法,我真的很感激。
答案 0 :(得分:11)
所有大写变量名称都是IMO输出,因为您实际上并未声明/定义常量而是静态变量。大写名称更适合"常量"。也就是说,我亲自采用第一种方法。
private static final Logger logger = Logger.getLogger(ServiceImpl.class);
答案 1 :(得分:5)
我投票赞成 3
private static final Logger LOGGER = Logger.getLogger(ServiceImpl.class);
它是final
,因为你没有改变它,它是大写的,因为它是一个常量。
答案 2 :(得分:3)
我个人认为private static final Logger LOGGER= Logger.getLogger(ServiceImpl.class);
是出于语义和性能原因的最佳方式:
答案 3 :(得分:1)
我会选择第一个选项,但我认为这是个人选择的问题。
答案 4 :(得分:0)
第一个是最好的。我更喜欢记录器为final
和static
....
答案 5 :(得分:0)
在我对java风格指南的理解中,'logger'是最好的。 'LOGGER'将用于定义的常数。
此外,使用'final',应该让它更快一些。
因此#1。
答案 6 :(得分:0)
我建议不要在每个类中使用这样的变量,而是将此工作委托给来自jcabi-log的slf4j的静态实用程序包装器:
Logger.debug(this, "some variable = %s", value);
同时查看此帖子:http://www.yegor256.com/2014/05/23/avoid-java-static-logger.html
答案 7 :(得分:0)
在特定类的所有实例之间共享单个记录器对象并在程序的持续时间内使用相同的记录器是一种很好的编程习惯,因此我们使用static
和final
记录器。
不建议使用多个记录器(不良记录实践)而不是记录级别。
我认为
private static final Logger logger = Logger.getLogger(ServiceImpl.class);
是更好的选择。
答案 8 :(得分:0)
此处没有人使用LOG
或log
?我发现它在实践中更好。 (当然我不是第一个在标准的地方工作的人,因为龙目岛的@Log4j
也会生成一个log
字段。当然它也是静态最终的。而顺便说一下,这就是声明该字段的最佳方式...添加@Log4j
注释。完成。)
答案 9 :(得分:0)
private static final Logger LOGGER = Logger.getLogger(NameClass.class.getName());
如果记录器是最终的结算变量,则应在大写字母中定义。 虽然getLogger()静态方法需要使用String作为参数,但类名还应该调用类的.getName()。