Here's a patch that I've tested with Firebug 1 beta, and also works
with browsers that don't support console.log()

Index: Logging.js
===================================================================
--- Logging.js  (revision 1250)
+++ Logging.js  (working copy)
@@ -204,7 +204,28 @@
        this._messages.push(msg);
        this.dispatchListeners(msg);
        if (this.useNativeConsole) {
-            this.logToConsole(msg.level + ": " + msg.info.join(" "));
+            if (typeof(console) == 'object' && console.log) {
+                switch(msg.level) {
+                    case 'DEBUG':
+                        console.debug.apply(console,msg.info);
+                        break;
+                    case 'INFO':
+                        console.info.apply(console,msg.info);
+                        break;
+                    case 'WARNING':
+                        console.warn.apply(console,msg.info);
+                        break;
+                    case 'ERROR':
+                        console.error.apply(console,msg.info);
+                        break;
+                    default:
+                        console.log.apply(console,msg.info);
+                        break;
+                }
+            }
+            else {
+                this.logToConsole(msg.level + ": " + msg.info.join(" "));
+            }
        }
        this.counter += 1;
        while (this.maxSize >= 0 && this._messages.length > this.maxSize) {


On 1/19/07, Arnar Birgisson <[EMAIL PROTECTED]> wrote:

I put this in util.js in all of my projects:

if (window.console) {
    logger.useNativeConsole = false;

    // make the default logger log to firebug (log objects, not just strings)
    logger.addListener('firebug', null, function (msg) {
        var func = null;
        switch (msg.level) {
            case 'DEBUG':   func = console.debug; break;
            case 'INFO':    func = console.info; break;
            case 'ERROR':   func = console.error; break;
            case 'FATAL':   func = console.error; break;
            case 'WARNING': func = console.warning; break;
            default: func = console.log;
        }
        func.apply(console, extend([msg.level+":"], msg.info));
    });
}

Seems to work with all versions of MochiKit and FireBug I generally
used and doesn't cause problems on other browsers (although I can't
say for Opera).

Arnar

On 1/18/07, Chamius <[EMAIL PROTECTED]> wrote:
>
> The new Firebug 1.0 Beta supports sending objects to its console.log
> and then being able to browse them in the GUI. This is very useful, but
> MochiKit currently flattens out the objects to a string before passing
> them to the console.log.
>
> A quick simple fix:
>
> First:
>
>         if (this.useNativeConsole) {
>             // JCHAM: pass msg object instead of str
>             this.logToConsole(msg);
>         }
>         ...
>
> Then:
>
>     /** @id MochiKit.Logging.Logger.prototype.logToConsole */
>     logToConsole: function (msg) {
>
>         // ---- JCHAM: Firebug console.log object
>         if (console && console.log) {
>                 // Firebug!
>                 var level = msg.level.toLowerCase();
>                 var f = console[level]? console[level] : console.log;
>                 f.apply(console, msg.info);
>                 return;
>         }
>         // ---- JCHAM: From here convert msg into a string, as orig
>         var msg = msg.level + ": " + msg.info.join(" ");
>         if (typeof(window) != "undefined" && window.console
>                 && window.console.log) {
>         ...
>
> This might break Safari and maybe won't work with other versions of
> Firebug. Not really sure yet how if there is a way to detect the
> presence of Firebug or previous versions of Firebug (how did
> console.log behave in previous versions of Firebug?). More on that when
> I get to it. Alternatively we could write a separate listener or Logger
> class.
>
> Jaime
>
>
> >
>

>




--
Martyn

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MochiKit" group.
To post to this group, send email to mochikit@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/mochikit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to