将Flask日志从INFO更改为DEBUG

Zek*_*oid 10 python logging flask

默认情况下,Flask会直接使用INFO标记记录GET和POST请求等内容.实现自定义记录器时,这些记录器将发布到同一记录器并使我的INFO层变得混乱.有没有办法将它们降级到像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)
Run Code Online (Sandbox Code Playgroud)

foo*_*rto 13

我不确定如何降级请求的日志级别(因为它通常在代码中明确说明,例如logging.info("...")),但以下内容可以帮助您减少Flask本身的详细程度.

Python允许您拥有多个记录器,每个记录器都有自己的日志级别.如果你知道模块的名称是或它与所描述的注册名称可以修改任何现有的记录在这里.

例如:

import logging
logger = logging.getLogger("mypackage.mymodule")  # or __name__ for current module
logger.setLevel(logging.ERROR)
Run Code Online (Sandbox Code Playgroud)

以上任何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)
Run Code Online (Sandbox Code Playgroud)


Pio*_*iek 8

事实上,有一种方法可以将日志记录从INFO降级到DEBUG(即使它已经使用诸如此类的调用发出info()).这可以使用连接到记录器的过滤器来实现.根据文档,过滤器检查:

是否记录了指定的记录?返回零表示否,非零表示是.如果认为合适,可以通过这种方法就地修改记录.

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