[slf4j-user] (no subject)

Robert Elliot rob at lidalia.org.uk
Thu Jan 26 10:52:56 CET 2012


Intended behaviour.  It could not possibly happen any other way - in your second example o.hashCode() is evaluated *before* logger.debug, so there is no way that SLF4J can know whether the log level is debug.

The fact that you avoid the NPE in the first case is luck - turn the log level to debug and you will get the NPE.  The bug is in your code - it is a bug that o may be null and you are calling methods on it without checking for null.

----- Original Message -----
> From: DasUntier at gmx.net
> To: slf4j-user at qos.ch
> Sent: Thursday, 26 January, 2012 8:28:04 AM
> Subject: [slf4j-user] (no subject)
> Hello,
> 
> maybe I'm wrong, but I from the description
> 
> http://www.slf4j.org/faq.html#logging_performance
> 
> I understand, that the following two statements should be equivalent,
> considering the current logging level is INFO or higher:
> 
> // first
> if (logger.isDebugEnabled()) {
> logger.debug("Msg: " + someObject);
> }
> 
> // second
> logger.debug("Msg: {}", someObject);
> 
> But they aren't, if you want to call a method from the object:
> 
> // Object might be null, for some reason in some logging levels
> Object o = null;
> 
> // Everythings fine
> if (logger.isDebugEnabled()) {
> logger.debug("Msg: " + o.hashCode());
> }
> 
> // NullPointerException is thrown, since o is null for DEBUG level
> logger.debug("Msg: {}", o.hashCode());
> 
> Is this a bug or intended behaviour? I couldn't find any hints in the
> documentation.
> 
> Greetings,
> 
> Aaron Kunde
> --
> Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
> belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de
> _______________________________________________
> slf4j-user mailing list
> slf4j-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/slf4j-user


More information about the slf4j-user mailing list