[Flask] How to wrest complete control of log output location from Flask?

Scott Werner scott.werner.vt at gmail.com
Sun May 14 13:30:29 EDT 2017


I use the following to clear and set my own log handlers in my flask app:

def configure_logging(app):
    loggers = ['', 'flask', 'werkzeug']
    level = logging.DEBUG if app.config['DEBUG'] else logging.INFO
    handlers = []

    # Color handler
    color_format = '%(log_color)s%(asctime)s - %(levelname)s - %(name)s -
%(message)s'
    color_handler = colorlog.StreamHandler()
    color_handler.setFormatter(colorlog.ColoredFormatter(color_format))
    handlers.append(color_handler)

    # Configure each logger
    for logger in loggers:
        named_logger = logging.getLogger(logger)
        named_logger.setLevel(level)
        named_logger.handlers = []  # clear existing handlers

        for handler in handlers:
            named_logger.addHandler(handler)


On Fri, May 12, 2017 at 12:04 PM, Gergely Polonkai <gergely at polonkai.eu>
wrote:

> Take a look at Flask-Logging-Extras, which does exactly that, but without
> overriding Flask methods:
>
> https://pypi.python.org/pypi/Flask-Logging-Extras
>
> You may or may not like its functionality, but looking at its source code
> will answer your question.
>
> On Fri, May 12, 2017, 16:58 Skip Montanaro <skip.montanaro at gmail.com>
> wrote:
>
>> In my Flask subclass, I override run() and set up self.logger just the
>> way I want it:
>>
>> class FlaskApp(Flask):
>>     def run(self, ..., logfile):
>>         ...
>>         handler = FileHandler(logfile)
>>         handler.setFormatter(Formatter(...))
>>         self.logger.handlers = [handler]
>>         ...
>>     super(FlaskApp, self).run(...)
>>
>> I guess in Flask.run it tacks on a StreamHandler instance, because all
>> my logging goes to my file, but the traditional web server log lines
>> still go to stdout or stderr. How do I make it stop that? I want
>> everything to go to the file I define.
>>
>> Thx,
>>
>> Skip Montanaro
>> _______________________________________________
>> Flask mailing list
>> Flask at python.org
>> https://mail.python.org/mailman/listinfo/flask
>>
>
> _______________________________________________
> Flask mailing list
> Flask at python.org
> https://mail.python.org/mailman/listinfo/flask
>
>


-- 
Scott Werner
scott.werner.vt at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/flask/attachments/20170514/bc5f92d2/attachment.html>


More information about the Flask mailing list