簡體   English   中英

如何將默認的燒瓶記錄器輸出更改為 json 日志處理程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM