[英]How to change default flask logger output to an json logging handler
我需要將燒瓶默認日志處理程序更改為自定義 JSON 日志記錄文本,我可以在 app.run() 之前更改處理程序,但是當我不是標准處理程序時,燒瓶設置默認處理程序(clear() 日志處理程序)
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)
剛剛偶然發現了一個非常方便的方法來解決這個挑戰。
獲取 json-logging 包( 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 應用程序中照常進行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.