[Mono-bugs] [Bug 666461] Log.Debug() doesn't seem to be working in P11

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Mon Jan 24 16:53:24 EST 2011


https://bugzilla.novell.com/show_bug.cgi?id=666461

https://bugzilla.novell.com/show_bug.cgi?id=666461#c1


--- Comment #1 from Jonathan Pryor <jpryor at novell.com> 2011-01-24 21:53:23 UTC ---
So, the problem is a fundamental misunderstanding of Log (which the docs don't
help with).

In order to avoid extraneous string marshaling costs (particularly for
messages, as I'm assuming messages are fairly long), Log.Debug/Error/etc. are
implemented like;

    public static int Debug(string tag, string message)
    {
        if (!IsLoggable (tag, LogPriority.Debug)
            return 0;
        return _d (tag, msg);
    }

I thought it was a nice performance optimization...

The problem is that Log.IsLoggable() apparently has no relation to the actual
logging methods; try this in Java:

    Log.i("*jonp*", "DEBUG enabled? " + Log.isLoggable(TAG, Log.DEBUG));
    Log.d(TAG, "This is my DEBUG message");

and the output is:

    I/*jonp*  (  585): DEBUG enabled? false
    D/*jonp*  (  585): This is my DEBUG message

Notice that Log.isLoggable() says that the message is not loggable (it returns
`false`), yet it logs the message anyway.  (However, Log.d() doesn't say that
it pays any attention to isLoggable(), so I'm not even sure that the
isLoggable() method is _for_, other than an "opt-in suggestion"...)

Thus, the question: should we continue with the IsLoggable() use, or skip it
entirely?

-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.


More information about the mono-bugs mailing list