Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Use a custom logger subclass that uses DEBUG level if in debug mode

  • Loading branch information...
commit d44b12774879cba83bf33c8ed7733157ab84d778 1 parent 7083b35
Armin Ronacher authored
Showing with 12 additions and 5 deletions.
  1. +8 −4 flask.py
  2. +4 −1 tests/flask_tests.py
12 flask.py
View
@@ -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 @@ def logger(self):
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
5 tests/flask_tests.py
View
@@ -718,9 +718,11 @@ def test_logger_cache(self):
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 @@ def exc():
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:
Please sign in to comment.
Something went wrong with that request. Please try again.