Python 将烧瓶日志从INFO更改为DEBUG

Python 将烧瓶日志从INFO更改为DEBUG,python,logging,flask,Python,Logging,Flask,默认情况下,Flask将使用INFO标记直接记录GET和POST请求。在实现自定义记录器时,这些日志会发布到同一个记录器,并使my INFO层混乱。有没有办法将它们降级到另一个层,比如DEBUG 这是我使用的记录器: # create logger FORMAT = '%(asctime)s - %(module)s - %(levelname)s - Thread_name: %(threadName)s - %(message)s' logging.basicConfig( form

默认情况下,Flask将使用INFO标记直接记录GET和POST请求。在实现自定义记录器时,这些日志会发布到同一个记录器,并使my 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)

我不确定有什么方法可以降低请求的日志级别(通常在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()
)。这可以使用连接到记录器的过滤器来实现。根据a过滤器检查:

是否要记录指定的记录?返回零表示否,返回非零表示否 对如果认为合适,可通过以下方式对记录进行适当修改 这个方法


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

以防有人访问此位置

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

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


tldr;不要使用print,use logger

正确的是,通过将应用程序中的级别设置为ERROR,虽然它会从Flask中删除信息日志,但它不允许我在没有看到信息的情况下拥有调试级别日志,对吗?我必须将所有调试日志都变成错误,至少,这样才能使其正常工作。即使我使用getLogger函数,Flask似乎仍然会将信息日志记录到我的日志中……您是否创建了@foobarto所描述的自定义日志?这就是报告您的自定义日志和烧瓶日志?这是正确的答案,而不是像另一个那样笨拙的操作。Python缓冲了
print
函数,可能这就是为什么您这样看待它。您可以通过以下几种方式解决此问题,请参阅此处的详细信息: