[ 
https://issues.apache.org/jira/browse/CB-348?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13281634#comment-13281634
 ] 

Patrick Mueller commented on CB-348:
------------------------------------

The current implementation of this issue is the 
{{lib/common/plugin/console-via-logger.js}} file, which is only useful if you 
are also using the logger plugin as the sink of the logging messages.

We can do better, to provide a way for folks with lame-y {{console}} objects to 
be shimmed.  Shimming means adding the methods in the FireBug/node.js 
{{console}} objects [1][2].

Basic idea is to create a new module {{console-shims.js}}, which will support 
the following methods:

*{{installShims()}}*
{quote}
Will create missing {{console}} methods which all use {{console.log()}} to 
generate the output.

Calls {{removeShims()}} before installing the shims.
{quote}

*{{installWrappedShims()}}*
{quote}
Will create missing {{console}} methods which all use {{console.log()}} to 
generate the output,
and for existing {{console}} methods, will call the original and then a 
'shimmed' version which calls console.log()

Calls {{removeShims()}} before installing the shims.
{quote}

*{{removeShims()}}*
{quote}
Resets the {{console}} object to the original version.
{quote}

*{{installLoggerForConsole()}}*
{quote}
Sets {{console.log()}} to call the original {{console.log()}}, if it exists, 
then logs the message with {{logger.log()}}
{quote}

For all platforms, we'll use:
{noformat}
    require("console-shims").installShims()
{noformat}

For iOS, we'll use:
{noformat}
    require("console-shims").installLoggerForConsole()
    require("console-shims").installWrappedShims()
{noformat}

And then of course other platforms can do whatever they wish.

We can then do away with {{console-via-logger.js}}.

[1] http://getfirebug.com/wiki/index.php/Console_API
[2] http://nodejs.org/docs/latest/api/stdio.html
                
> console object improvements
> ---------------------------
>
>                 Key: CB-348
>                 URL: https://issues.apache.org/jira/browse/CB-348
>             Project: Apache Cordova
>          Issue Type: Improvement
>          Components: CordovaJS
>            Reporter: Patrick Mueller
>            Assignee: Patrick Mueller
>
> There is some room for improvement in the console object we support in 
> Cordova.
> # not all of the common API is supported.  Here is the API as implemented by 
> Firebug, most of which is also implemented in Web Inspector: [Firebug Console 
> API|http://getfirebug.com/wiki/index.php/Console_API].  An example of the 
> issue with this is that the weinre demo makes use of markTimeline (actually, 
> that's a WebKit-only console method - I think the only one!).  So the demo 
> dies an early death, if Cordova's console wins the "overwrite the native" 
> battle.
> \\ \\
> # which naturally leads to the next issue - the console should daisy chain 
> its calls to the "native" console, if it exists.  An example of this issue is 
> that if you use iWebInspector on a Cordova app, console logging happens in 
> the Xcode console, not the iWebInspector console.  I'm fine to have it in 
> both places.
> \\ \\
> # console output operations should "buffer".  An example of this issue is 
> that any console operations which occur BEFORE deviceReady are passed 
> directly to the bit bucket.  Instead, we should "buffer" these, and then when 
> deviceReady occurs, the console can dump what it's buffered.
> Turns out, I have some of these same issues in weinre, but I don't think we 
> can share an implementation.  weinre generally just delegates everything to 
> the weinre client - eg, arguments to console.log() are sent as 'remote 
> objects', whereas in Cordova we actually need to evaluate them.  The 
> buffering and daisy chaining should be exactly the same, and perhaps those 
> need to be configured (eg, console.daisyChainNative(false)) - maybe the code 
> or at least design could be shared there.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to