From d44b12774879cba83bf33c8ed7733157ab84d778 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Fri, 18 Jun 2010 16:53:38 +0200 Subject: [PATCH] Use a custom logger subclass that uses DEBUG level if in debug mode --- flask.py | 12 ++++++++---- tests/flask_tests.py | 5 ++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/flask.py b/flask.py index 93b39e05..ea25cdae 100644 --- a/flask.py +++ b/flask.py @@ -867,7 +867,7 @@ class Flask(_PackageBoundObject): #: .. versionadded:: 0.3 debug_log_format = ( '-' * 80 + '\n' + - '%(levelname)s in %(module)s, %(pathname)s:%(lineno)d]:\n' + + '%(levelname)s in %(module)s [%(pathname)s:%(lineno)d]:\n' + '%(message)s\n' + '-' * 80 ) @@ -997,15 +997,19 @@ class Flask(_PackageBoundObject): with _logger_lock: if self._logger and self._logger.name == self.logger_name: return self._logger - from logging import getLogger, StreamHandler, Formatter, DEBUG + from logging import getLogger, StreamHandler, Formatter, \ + Logger, DEBUG + class DebugLogger(Logger): + def getEffectiveLevel(x): + return DEBUG if self.debug else Logger.getEffectiveLevel(x) class DebugHandler(StreamHandler): def emit(x, record): - if self.debug: - StreamHandler.emit(x, record) + StreamHandler.emit(x, record) if self.debug else None handler = DebugHandler() handler.setLevel(DEBUG) handler.setFormatter(Formatter(self.debug_log_format)) logger = getLogger(self.logger_name) + logger.__class__ = DebugLogger logger.addHandler(handler) self._logger = logger return logger diff --git a/tests/flask_tests.py b/tests/flask_tests.py index eccf68f3..f0f15a7b 100644 --- a/tests/flask_tests.py +++ b/tests/flask_tests.py @@ -718,9 +718,11 @@ class LoggingTestCase(unittest.TestCase): def test_debug_log(self): app = flask.Flask(__name__) app.debug = True + @app.route('/') def index(): app.logger.warning('the standard library is dead') + app.logger.debug('this is a debug statement') return '' @app.route('/exc') @@ -731,9 +733,10 @@ class LoggingTestCase(unittest.TestCase): with catch_stderr() as err: rv = c.get('/') out = err.getvalue() - assert 'WARNING in flask_tests,' in out + assert 'WARNING in flask_tests [' in out assert 'flask_tests.py' in out assert 'the standard library is dead' in out + assert 'this is a debug statement' in out with catch_stderr() as err: try: