如何将默认的Flask Logger输出更改为JSON日志处理程序

时间:2019-05-27 12:37:51

标签: python-3.x logging flask

我需要将flask默认日志记录处理程序更改为自定义JSON日志记录文本,我可以在app.run()之前更改处理程序,但是当我没有标准处理程序(clear()日志记录处理程序)时,flask设置了默认处理程序< / p>

2 个答案:

答案 0 :(得分:0)

import logging
from pythonjsonlogger.jsonlogger import JsonFormatter

def get_logger(module_name):
    """Generate a logger."""
    logger = logging.getLogger(module_name)
    # logger.setLevel(logging.CRITICAL)
    logger.setLevel(logging.DEBUG)
    logger.propagate = False    # reset handler to avoid duplicates
    logger.handlers = [get_json_handler()]
    return logger


def get_json_handler():
    """Generate a JsonFormatter"""
    formatter = JsonFormatter("(asctime) (levelname) (module) (funcName) (lineno) (message)")
    log_handler = logging.StreamHandler()
    log_handler.setFormatter(formatter)
    return log_handler

# Example:
log = get_logger()

flask_log = logging.getLogger('werkzeug')
flask_log.setLevel(logging.DEBUG)
flask_log.addHandler(log)

答案 1 :(得分:0)

只是偶然发现了一种非常方便的方法来解决这一挑战。

使用json记录程序包(https://github.com/bobbui/json-logging-python

安装该软件包,就这么简单:

import datetime, logging, sys, json_logging, flask

app = flask.Flask(__name__)
json_logging.init_flask(enable_json=True)
json_logging.init_request_instrument(app)

然后像往常一样在Flask应用中进行操作。