我需要将flask默认日志记录处理程序更改为自定义JSON日志记录文本,我可以在app.run()之前更改处理程序,但是当我没有标准处理程序(clear()日志记录处理程序)时,flask设置了默认处理程序< / p>
答案 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应用中进行操作。