默认情况下,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)
答案 0 :(得分:12)
我不确定如何降级请求的日志级别(因为它通常在代码中明确说明,例如logging.info(" ..."))但是以下内容可以帮助你减少Flask本身的冗长。
Python允许您拥有多个记录器,每个记录器都有自己的日志级别。 如果您知道它所在的模块名称或它所注册的名称,您可以修改任何现有的记录器here。
例如:
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)
答案 1 :(得分:8)
实际上,有一种方法可以将日志记录从INFO降级到DEBUG(即使已经使用info()
之类的调用发出了它。这可以使用连接到记录器的过滤器来实现。根据{{3}}过滤器检查:
是否要记录指定的记录?返回零表示否,非零表示 是。 如果认为合适,记录可以就地修改 这种方法。
因此,过滤器可能会更改日志记录的级别( levelno 和 levelname 属性)。稍后,处理程序可以根据新级别允许或删除此记录。
答案 2 :(得分:2)
以防万一有人参观这个地方,
我也面临着同样的问题。似乎打印调用趋向于“不运行”。但是,如果您使用记录器而不是打印,您会发现代码实际上仍在运行。
不太清楚是什么原因,但是当我的代码的其他部分开始运行时,所有旧打印内容都会突然出现。
tldr;不使用打印,使用记录器