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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---