如何使自定义记录器可用于 Flask 应用程序中的所有文件

问题描述 投票:0回答:1

我是 Flask 的新手,我试图在 Python Flask 应用程序的日志中添加更多字段。我正在使用日志记录模块并定制如下

文件名:

logger.py

import logging
from flask import Flask
from flask_log_request_id import current_request_id

APP = Flask(__name__)

class LoggerFilter(logging.Filter):
    def filter(self, record):
        record.request_id = current_request_id()
        return True

logger = logging.getLogger(__name__)
logger.addFilter(LoggerFilter())

我试图在其他文件中使用

logger

from logger import logger

@app.route("/", methods=['GET'])
def get_list():
    logger.info("Hello")
    # Other codes

这不打印任何日志。我的需要是在所有地方使用自定义记录器。请在这件事上给予我帮助。谢谢

python
1个回答
0
投票

直接致电

getLogger
即可。
logging
模块实现了它自己的记录器命名空间:无论
getLogger('foo')
在哪里被调用,
Logger
都会返回相同的
getLogger
实例。

import logging

logger = logging.getLogger('logger')

@app.route("/", methods=['GET'])
def get_list():
    logger.info("Hello")
    # Other codes

由此得出的结论是记录图书馆希望访问的记录器,以便您可以适当地配置它们。 (也就是说,

logging.basicConfig
或类似的东西在您的
if __name__ == '__main__'
块中被调用,您可以在其中进行额外的配置。每个使用
getLogger
的库都会由应用程序配置该记录器。)

© www.soinside.com 2019 - 2024. All rights reserved.