Python:如何将所有记录器的日志记录级别设置为 INFO

har*_*der 13 python logging

我正在使用以下配置

import logging


FORMAT = '%(levelname)s: %(asctime)-15s: %(filename)s: %(funcName)s: %(module)s: %(message)s'
logging.basicConfig(filename="/var/log/out.log", level=logging.INFO, format=FORMAT)
LOGGER = logging.getLogger("Customer")
Run Code Online (Sandbox Code Playgroud)

然后是我导入的一些库。这些库具有调试日志记录语句,例如

 LOGGER = logging.getLogger(__name__)
 LOGGER.debug('add_timeout: added timeout %s; deadline=%s at %s',
                     timeout_id, deadline, timeout_at)
Run Code Online (Sandbox Code Playgroud)

当我运行我的程序时,它也会打印内部库的调试日志。我想完全避免调试日志。

ale*_*lli 22

下面的代码应该可以解决问题。

loggers = [logging.getLogger(name) for name in logging.root.manager.loggerDict]
for logger in loggers:
    logger.setLevel(logging.INFO)
Run Code Online (Sandbox Code Playgroud)

第一行返回实例化的日志列表。for 循环只是将级别设置为所有日志。

PS 归功于/sf/answers/3727504651/