2015-11-08 34 views
4

我有两个选项可以在一个类中初始化Logger在班级中初始化记录器的最佳方式是什么?

第一种方式是提供Class<?>的实例:

logger = LoggerFactory.getLogger(SignUpController.class); 

,第二个被传递String标识符(包和类名):

logger = LoggerFactory.getLogger("controller.SignUpController"); 

的问题是:

初始化类的记录器的最佳方法是什么?
应该使用哪些修饰符? (访问修饰符,staticfinal

回答

6

我用

public final Logger = LogFactory.getLogger(getClass()); 

原因之一,这将始终确保即使在类名的重构后的正确的类名。每个实例化对象对每个类的一个记录器实例的开销是可忽略的。

我只需要使用静态记录器,当我需要以静态上下文记录某些内容,然后使用第一种方法对其进行初始化。

4

使用第一个

private static final Logger logger = LoggerFactory.getLogger(SignUpController.class); 

因为,该API(其接受类对象),该方法在内部调用完全限定类名,所以日志记录控制/配置可以正确完成。

我用private static final因为私人:为记录器实例不应该提供给类以外的和静态:没有使用具有一类的每个对象和独立的实例最终给不给初始化后更改引用。

相关问题