即使在propagate=False 时,Python 日志模块也会打印到控制台

标签 python logging

我正在尝试使用日志记录模块打印到文件。 它工作正常,我的文件有我的日志,但它也将这些日志显示到我的控制台窗口,这是我不希望发生的。 我尝试了以下方法:

logger = logging.getLogger('log')

hdlr = logging.handlers.RotatingFileHandler(LOG_FILENAME, maxBytes=200000, backupCount=3)

formatter = logging.Formatter('%(asctime)s -- %(levelname)s -- \n%(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr) 
logger.setLevel(logging.INFO)
logger.propagate = False

即使很困难,它仍然会打印到控制台。 有什么想法吗?

最佳答案

很可能您在某个地方调用了 logging.basicConfig() ,或者调用了 logging.info() 或类似的(调用模块级函数,而不是记录器方法)。

模块级函数旨在简单使用,如果没有为根记录器分配处理程序,则创建并添加控制台处理程序。因此,请确保您没有 logging.debug(...) 样式调用,并且您没有调用 basicConfig() 或其他可能会更改您的日志记录配置函数日志记录配置。

关于即使在propagate=False 时,Python 日志模块也会打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18286191/

相关文章:

c# - 如何在共享文件夹中存储的 C# 类中使用记录器

grails - 在Grails 3.2.8中尚未通过logback.groovy文件配置Log4j

asp.net - 登录 .NET

python - XPath 通过正则表达式运行 text() 仅返回数字

Python:检查坐标是否在圆内

python - 如何执行存储为字符串的 bool 逻辑,最好不使用 eval()?

database - 将日志消息存储在数据库表中而不是文件中是好是坏?

python - 打印字符串和 float 时出错

python - 索引错误 : too many indices for array for numpy in Python

c# - 将 TelemetryClient 的静态实例与 Application Insights 结合使用