将 Flask 日志从 INFO 更改为 DEBUG

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

Flask 默认情况下会直接使用 INFO 标签记录 GET 和 POST 请求等内容。当实现自定义记录器时,这些记录器会发布到同一个记录器并弄乱我的信息层。有没有办法将它们降级到 DEBUG 之类的另一层?

这是我使用的记录器:

# create logger
FORMAT = '%(asctime)s - %(module)s - %(levelname)s - Thread_name: %(threadName)s - %(message)s'
logging.basicConfig(
    format=FORMAT, datefmt='%m/%d/%Y %I:%M:%S %p',
    filename='wizard/logs/example.log', level=logging.DEBUG)
python logging flask
3个回答
39
投票

我不确定降级请求日志级别的方法(因为通常在像logging.info(“...”)这样的代码中明确说明),但以下内容可能会帮助您减少Flask本身的冗长性.

Python 允许您拥有多个记录器,每个记录器都有自己的日志级别。 如果您知道任何现有记录器所在的模块名称或其注册名称(如此处所述),则可以修改任何现有记录器。

例如:

import logging
logger = logging.getLogger("mypackage.mymodule")  # or __name__ for current module
logger.setLevel(logging.ERROR)

上述操作可以对任何Python模块完成。 Flask 为每个应用程序提供一个记录器。您可以像这样获取它的参考:

import logging
from flask import Flask
app = Flask(__name__)  # or instead of __name__ provide the name of the module
app.logger.setLevel(logging.ERROR)

10
投票

事实上,有一种方法可以将日志记录从 INFO 降级为 DEBUG(即使它已经使用诸如

info()
之类的调用发出)。这可以使用连接到记录器的过滤器来实现。根据 docs 过滤器检查:

是否记录指定的记录?表示“否”返回零,表示非零 是的。 如果认为适当,可以通过以下方式就地修改记录: 这个方法。

因此过滤器可能会更改日志记录的级别(levelnolevelname属性)。稍后,处理程序可能会根据新级别允许或删除此记录。


0
投票

我也面临着同样的问题。看来打印调用有“不运行”的趋势。但如果您使用记录器而不是打印,您会发现代码实际上仍在运行。

不太确定原因是什么,但是当我的代码的其他部分突然开始运行时,所有旧的打印都会出现。

tldr;不要使用打印,使用记录器

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