Browse Source

Configure automatically with current_app

autoconfigure
Gergely Polonkai 4 years ago
parent
commit
b9c3128315
  1. 7
      flask_logging_extras/__init__.py
  2. 2
      setup.py
  3. 17
      tests/test_logger_keywords.py

7
flask_logging_extras/__init__.py

@ -32,7 +32,7 @@ no value is present in the message record.
import logging
from flask import has_request_context, request
from flask import has_request_context, request, current_app, has_app_context
__version_info__ = ('0', '0', '1')
__version__ = '.'.join(__version_info__)
@ -129,6 +129,9 @@ class FlaskExtraLogger(logging.getLoggerClass()):
super(FlaskExtraLogger, self).__init__(*args, **kwargs)
def _log(self, *args, **kwargs):
if has_app_context() and self.app is None:
self.init_app(current_app)
if 'extra' not in kwargs:
kwargs['extra'] = {}
@ -172,6 +175,8 @@ class FlaskExtraLogger(logging.getLoggerClass()):
reserved for internal use
"""
self.app = app
app.config.setdefault('FLASK_LOGGING_EXTRAS_KEYWORDS', {})
app.config.setdefault('FLASK_LOGGING_EXTRAS_BLUEPRINT',
(None, '<app>', '<not a request>'))

2
setup.py

@ -8,7 +8,7 @@ Flask-Logging-Extras provides extra logging functionality for Flask apps.
from setuptools import setup
setup(name='Flask-Logging-Extras',
version='0.1.0',
version='0.1.1',
url='https://github.com/gergelypolonkai/flask-logging-extras',
license='MIT',
author='Gergely Polonkai',

17
tests/test_logger_keywords.py

@ -191,10 +191,10 @@ class LoggerBlueprintTestCase(TestCase):
self.stream = ListStream()
formatter = logging.Formatter(fmt)
handler = TestingStreamHandler(stream=self.stream)
handler.setLevel(logging.DEBUG)
handler.setFormatter(formatter)
app.logger.addHandler(handler)
self.handler = TestingStreamHandler(stream=self.stream)
self.handler.setLevel(logging.DEBUG)
self.handler.setFormatter(formatter)
app.logger.addHandler(self.handler)
app.logger.setLevel(logging.DEBUG)
bp = Blueprint('test_blueprint', 'test_bpg13')
@ -218,6 +218,15 @@ class LoggerBlueprintTestCase(TestCase):
def tearDown(self):
logging.setLoggerClass(self.original_logger_class)
def test_autoconfig(self):
logger = logging.getLogger('test')
logger.addHandler(self.handler)
with self.app.app_context():
logger.warning('Hello')
self.assertEqual('<norequest> Hello\n', self.stream.lines[-1])
def test_request_log(self):
self.client.get('/app')
self.assertEqual('<app> Message\n', self.stream.lines[-1])

Loading…
Cancel
Save