On 21.03.2011, at 00:34, Rusty Wright wrote:

> In the log4j documentation they recommend "statically instantiating a logger 
> in each class, with the logger name equal to the fully qualified name of the 
> class."  For example,
> 
>  static Logger logger = Logger.getLogger(MyApp.class);
> 
> I've never understood why it's necessary to declare the logger static.  I've 
> assumed/guessed that it is to reduce the number of calls to getLogger.
> 
> The slf4j documentation doesn't use static; for example,
> 
>  final Logger logger = LoggerFactory.getLogger(Wombat.class);
> 
> I've also wondered why everyone uses .class; I've been using this.getClass(); 
> for example,
> 
>  private final transient Logger log = 
> LoggerFactory.getLogger(this.getClass());
> 

There is one more thing to be aware of:
If you use this.getClass() in Wombat and you extend it from the class MyWombat 
then all loggers contained in the base-class will also log using the logger 
name MyWombat.
Some would say that this is actually a nice feature but I'd argue that it's 
confusing to see a log message with a different logger name than the class the 
logger call is actually contained in.

I'm not saying that it's wrong to create a logger like this... just be careful 
and know what you are doing ;)

Cheers,
Joern.
_______________________________________________
slf4j-user mailing list
[email protected]
http://qos.ch/mailman/listinfo/slf4j-user

Reply via email to