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)
我不确定降级请求日志级别的方法(因为通常在像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)
事实上,有一种方法可以将日志记录从 INFO 降级为 DEBUG(即使它已经使用诸如
info()
之类的调用发出)。这可以使用连接到记录器的过滤器来实现。根据 docs 过滤器检查:
是否记录指定的记录?表示“否”返回零,表示非零 是的。 如果认为适当,可以通过以下方式就地修改记录: 这个方法。
因此过滤器可能会更改日志记录的级别(levelno和levelname属性)。稍后,处理程序可能会根据新级别允许或删除此记录。
我也面临着同样的问题。看来打印调用有“不运行”的趋势。但如果您使用记录器而不是打印,您会发现代码实际上仍在运行。
不太确定原因是什么,但是当我的代码的其他部分突然开始运行时,所有旧的打印都会出现。
tldr;不要使用打印,使用记录器