On Aug 25, 2007, at 3:17 PM, Matt S Trout wrote:

On Fri, Aug 24, 2007 at 10:15:37PM +0100, Will Hawes wrote:
I've been trying unsuccessfully to disable all debug messages while running tests on my app with prove. Setting CATALYST_DEBUG=0 eliminates all the test server debug output such as the list of loaded actions, but i am still seeing the output of every call made to $c->log->debug by my controller
code.

As far as I can see the docs regarding CATALYST_DEBUG=0 don't make any
distinction about where debug messages originate, only that they are
suppressed, which presumably means I shouldn't be seeing any debug output at
all.

Is my mistake in misunderstanding how $c->log->debug() is supposed to work?

Yes.

That logs a message of level 'debug'.

The internal Catalyst debugging aid stuff checks $c->debug and if so logs messages with the debug level. But that doesn't mean turning off the internal
debugging changes the configuration of your logger whatsoever.


But what's the point of using $c->debug to gate debug messages when you could just check $log->is_debug? It is confusing to have some debug log messages in the system gated on $c->debug, and others just on $log->is_debug.

The advantage of $log->is_debug is that some logging systems (e.g. Log4perl) will allow you to switch debugging on and off at runtime, without a server restart, even in production.

Jonathan suggests that it might be for performance, but method calls like $c->debug cannot be optimized away at compile time. And in any case, the performance gains would be pretty small potatoes.

Jon


_______________________________________________
List: [email protected]
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to