simplify logging configuration
single default handler and formatter don't remove handlers configure level once using setLevel document logging reorganize logging tests
This commit is contained in:
parent
85fa8aabf5
commit
66b1b752da
13 changed files with 399 additions and 451 deletions
91
tests/test_logging.py
Normal file
91
tests/test_logging.py
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
import logging
|
||||
import sys
|
||||
|
||||
import pytest
|
||||
|
||||
from flask._compat import StringIO
|
||||
from flask.logging import default_handler, has_level_handler, \
|
||||
wsgi_errors_stream
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def reset_logging(monkeypatch):
|
||||
root_handlers = logging.root.handlers[:]
|
||||
root_level = logging.root.level
|
||||
|
||||
logger = logging.getLogger('flask.app')
|
||||
logger.handlers = []
|
||||
logger.setLevel(logging.NOTSET)
|
||||
|
||||
yield
|
||||
|
||||
logging.root.handlers[:] = root_handlers
|
||||
logging.root.setLevel(root_level)
|
||||
|
||||
logger.handlers = []
|
||||
logger.setLevel(logging.NOTSET)
|
||||
|
||||
|
||||
def test_logger(app):
|
||||
assert app.logger.name == 'flask.app'
|
||||
assert app.logger.level == logging.NOTSET
|
||||
assert app.logger.handlers == [default_handler]
|
||||
|
||||
|
||||
def test_logger_debug(app):
|
||||
app.debug = True
|
||||
assert app.logger.level == logging.DEBUG
|
||||
assert app.logger.handlers == [default_handler]
|
||||
|
||||
|
||||
def test_existing_handler(app):
|
||||
logging.root.addHandler(logging.StreamHandler())
|
||||
assert app.logger.level == logging.NOTSET
|
||||
assert not app.logger.handlers
|
||||
|
||||
|
||||
def test_wsgi_errors_stream(app, client):
|
||||
@app.route('/')
|
||||
def index():
|
||||
app.logger.error('test')
|
||||
return ''
|
||||
|
||||
stream = StringIO()
|
||||
client.get('/', errors_stream=stream)
|
||||
assert 'ERROR in test_logging: test' in stream.getvalue()
|
||||
|
||||
assert wsgi_errors_stream._get_current_object() is sys.stderr
|
||||
|
||||
with app.test_request_context(errors_stream=stream):
|
||||
assert wsgi_errors_stream._get_current_object() is stream
|
||||
|
||||
|
||||
def test_has_level_handler():
|
||||
logger = logging.getLogger('flask.app')
|
||||
assert not has_level_handler(logger)
|
||||
|
||||
handler = logging.StreamHandler()
|
||||
logging.root.addHandler(handler)
|
||||
assert has_level_handler(logger)
|
||||
|
||||
logger.propagate = False
|
||||
assert not has_level_handler(logger)
|
||||
logger.propagate = True
|
||||
|
||||
handler.setLevel(logging.ERROR)
|
||||
assert not has_level_handler(logger)
|
||||
|
||||
|
||||
def test_log_view_exception(app, client):
|
||||
@app.route('/')
|
||||
def index():
|
||||
raise Exception('test')
|
||||
|
||||
app.testing = False
|
||||
stream = StringIO()
|
||||
rv = client.get('/', errors_stream=stream)
|
||||
assert rv.status_code == 500
|
||||
assert rv.data
|
||||
err = stream.getvalue()
|
||||
assert 'Exception on / [GET]' in err
|
||||
assert 'Exception: test' in err
|
||||
Loading…
Add table
Add a link
Reference in a new issue