We use a "debug" datasource that routes the showLog output to firebug as
well.  You can enable this datasource while debugging (instead of using the
mysql driver) and when done, re-enable the mysql driver.

ex:

require_once (LIBS . 'model' . DS . 'datasources' . DS .
'dbo_source.php');
require_once (LIBS . 'model' . DS . 'datasources' . DS . 'dbo' . DS .
'dbo_mysql.php');

class DboMysqlExSource extends DboMysql {
    var $description = "MySQL DBO Driver - Extended";

    function showLog($sorted = false) {

        if ($sorted) {
            $log = sortByKey($this->_queriesLog, 'took', 'desc',
SORT_NUMERIC);
        } else {
            $log = $this->_queriesLog;
               }

        if ($this->_queriesCnt > 1) {
            $text = 'queries';
        } else {
            $text = 'query';
            }
        fb("({$this->configKeyName}) {$this->_queriesCnt} {$text} took
{$this->_queriesTime} ms\n");
        foreach ($log as $k => $i) {
            fb (($k +1) . ". {$i['query']} {$i['error']}\n");
            fb ("\tAffected: {$i['affected']}\tTook:{$i['took']} ms\n");
            }
        }
    }

On Sun, Dec 7, 2008 at 2:13 PM, lightglitch <[EMAIL PROTECTED]> wrote:

>
> Maybe this will help you:
>
> http://www.firephp.org/Wiki/Libraries/CakePHP
>
> On Dec 7, 4:32 am, Rob <[EMAIL PROTECTED]> wrote:
> > No, I don't expect Cake to format the output at all since we are doing
> > MVC.
> >
> > I want to use the debug output without it affecting my HTTP stream.
> >
> > The bug/problem is that if debug > 1, the content type gets flipped to
> > text/html, and the SQL debug gets appended to the XML (after the end
> > of the HTML because it's being output directly from the dbo_source.php
> >
> > If we're truly doing MVC, there should never be debug information
> > going directly to the view, and the debug information should be
> > accessible in the model to the controller so we can decide how to deal
> > with it.
> >
> > Say for instance I have debug set to 1 to catch errors. Now in my
> > controller code, I have to turn off debug for XML, so I don't get any
> > chance to catch those errors, which may or may not need to be dealt
> > with.
> >
> > I know the workaround is to detect that I'm doing XML and set debug to
> > 0, but that doesn't help in development in any way.
> >
> > Formatting the debug data and spitting it into the view like it does
> > is violating the MVC design (while it is nice when you're debugging
> > HTML).
> >
> > On Dec 6, 6:31 pm, James K <[EMAIL PROTECTED]> wrote:
> >
> > > Not sure I understand the problem. Do you expect Cake to format it's
> > > debug information based on the content type? It's debug information -
> > > it's meant for debugging.
> >
> > > You can type Configure::write('debug', 0) at the top of any action in
> > > order to lower the debug level selectively per action without having
> > > to shut if off for the entire app.
> >
> > > I have lots of views in a particular application that return XML or
> > > JSON, and of course having debug info at the bottom of that response
> > > will break those requests. Once I confirm the response is returning
> > > correctly formatted XML or JSON, I turn the debugging off for that
> > > action.... and only turn it back on in that action in the event I need
> > > to debug :P
> >
> > > Good luck,
> > > James
> >
> > > On Dec 6, 6:24 pm, Rob <[EMAIL PROTECTED]> wrote:
> >
> > > > I'll probably get no response or flames telling me to "just set debug
> > > > to 1", but ....
> >
> > > > I've set up my VolunteerCake code to be a RESTful web service by
> using
> > > > the Router::parseExtensions() and Router::mapResources() magic. This
> > > > works fine as long as debug is not greater than 1.
> >
> > > > When debug is greater than 1 however, the XML that gets returned is
> > > > broken due to problems with the way the SQL debug is spit out.
> >
> > > > I traced this down to a call In the close() function of
> > > > dbo_source.php, to showLog() which spits out the SQL in an HTML table
> >
> > > > I call the web service and get the XML as expected. The closing XML
> is
> > > > followed by the dump of the SQL like:
> >
> > > >       </VolunteerCake><!-- 0.9699s --><table class="cake-sql-log"
> > > > id="cakeSqlLog_1228604311493b0397a19568_61229664" summary="Cake SQL
> > > > Log" cellspacing="0" border = "0">
> > > >       <caption>(default) 36 queries took 127 ms</caption>
> >
> > > > Other web service tools I've worked with operate by giving you access
> > > > to the debug data so you can spit it out as part of the XML if you
> > > > want to, so you end up with something like:
> >
> > > > <VolunteerCake><myData>non-debug data</myData><debug>debug data
> > > > (usually wrapped in a CDATA)</debug></myData></VolunteerCake>
> >
> > > > Ideally Cake shouldn't be changing the content-type and spitting out
> > > > HTML after the well-formed document has been created anyway.
> >
> >
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" 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/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to