[logback-user] Compiler selecting wrong Logger method

Thorbjørn Ravn Andersen thunderaxiom at hotmail.com
Thu Feb 9 09:59:37 CET 2012


Ceki has not yet decided on the proper way to do varargs in slf4j.  Until
then, no official API.

See http://bugzilla.slf4j.org/show_bug.cgi?id=31 for the full history.

/Thorbjørn

-----Original Message-----
From: logback-user-bounces at qos.ch [mailto:logback-user-bounces at qos.ch] On
Behalf Of Stein, Eric
Sent: 6. februar 2012 14:24
To: logback users list
Subject: Re: [logback-user] Compiler selecting wrong Logger method

<sigh/> I'm a nitwit. I got confused because at my last job we used a
wrapper around slf4j, and the signature of the method was debug(String,
Object...). Out of curiosity, is there a reason why that format wasn't used?
The compiler should be smart enough to call the more specific debug(String,
Object, Object) when appropriate. Changing from Object[] to Object... should
also be backwards-compatible...

Thanks, Marco!

Eric

-----Original Message-----
From: logback-user-bounces at qos.ch [mailto:logback-user-bounces at qos.ch]
On Behalf Of BRESCIANI, MARCO (MARCO)
Sent: Monday, February 06, 2012 8:12 AM
To: logback users list
Subject: Re: [logback-user] Compiler selecting wrong Logger method

If I'm not wrong, using - Object[] - or the variable list - Object... - is a
bit different and in order to have the correct method, you should write
this:

        LOGGER.debug("Hi {} {} {}", new Object[] { arg1, arg2, arg3 });
     


MARCO BRESCIANI
ALCATEL-LUCENT
SENIOR SW CRAFT TERMINAL DEVELOPMENT ENG NETWORKS - IP DIVISION WT PRODUCT
UNIT via Trento, 30 - 20059 Vimercate (MB) - Italy
Phone: +39 039 686 6279
Fax: +39 039 686 5600
Marco.Bresciani at alcatel-lucent.com

-----Original Message-----
From: logback-user-bounces at qos.ch [mailto:logback-user-bounces at qos.ch]
On Behalf Of Stein, Eric
Sent: Monday, February 06, 2012 1:59 PM
To: logback-user at qos.ch
Subject: [logback-user] Compiler selecting wrong Logger method

I'm seeing a funny error when trying to write to logback. 
        import org.slf4j.Logger;
        import org.slf4j.LoggerFactory;

        final String arg1 = "arg1";
        final String arg2 = "arg2";
        final String arg3 = "arg3";
        LOGGER.debug("Hi {} {}", arg1, arg2);
        LOGGER.debug("Hi {} {} {}", new String[] { arg1, arg2, arg3 });
        LOGGER.debug("Hi {} {} {}", arg1, arg2, arg3);
     
The last line is giving this error message:

The method debug(Marker, String, Object, Object) in the type Logger is not
applicable for the arguments (String, String, String, String)

I don't see why it isn't using the method whose signature is debug(String,
Object[]), especially given that I'm not using a Marker.
I'm running in Eclipse Indigo, and my classpath looks like this:

logback-classic-1.0.0.jar
logback-core-1.0.0.jar
slf4j-api-1.6.4.jar

Does anybody know why the compiler is using the wrong method?

Thanks,
Eric Stein
_________________________________________________
Don't gamble with your environmental information. Learn how the world's
largest on-demand environmental information management system can help you
mitigate your operating risk: www.locustec.com.

_______________________________________________
Logback-user mailing list
Logback-user at qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user
_________________________________________________
Don't gamble with your environmental information. Learn how the world's
largest on-demand environmental information management system can help you
mitigate your operating risk: www.locustec.com.

_______________________________________________
Logback-user mailing list
Logback-user at qos.ch
http://mailman.qos.ch/mailman/listinfo/logback-user



More information about the Logback-user mailing list