In Java, why is it best practice to declare a logger static final
?
private static final Logger S_LOGGER
See Question&Answers more detail:osIn Java, why is it best practice to declare a logger static final
?
private static final Logger S_LOGGER
See Question&Answers more detail:osprivate
- so that no other class can hijack your loggerstatic
- so there is only one logger instance per class, also avoiding attempts to serialize loggersfinal
- no need to change the logger over the lifetime of the classAlso, I prefer name log
to be as simple as possible, yet descriptive.
EDIT: However there is an interesting exception to these rules:
protected final Logger log = LoggerFactory.getLogger(getClass());
as opposed to:
private static final Logger log = LoggerFactory.getLogger(Foo.class);
The former way allows you to use the same logger name (name of the actual class) in all classes throughout the inheritance hierarchy. So if Bar
extends Foo
, both will log to Bar
logger. Some find it more intuitive.