python - 如何在不从代码中删除日志语句的情况下关闭它们

标签 python logging xdebug

如果整个代码库中都有日志记录语句,我该如何设置记录器,以便在将代码部署到生产环境时不必注释掉对记录器的每次调用?

这是我当前的代码:

import logging


logging.basicConfig(filename='./example.log', level=logging.DEBUG, 
                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                    datefmt='%m-%d %H:%M')

logging.debug('debug failed')
logging.info('info failed')
logging.warning('A warning')

最佳答案

除了使用 basicConfig,您还可以根据任何条件使用您想要的处理程序更明确地设置记录器。

import logging

log = logging.getLogger("FOO")
log.setLevel(logging.DEBUG)

# needs a handler
log.info('info')
#No handlers could be found for logger "FOO"

ch = logging.StreamHandler()
log.addHandler(ch)
log.info('info')
# info

log.removeHandler(ch)

noop = logging.NullHandler()
log.addHandler(noop)
# nothing happens here
log.info('info')

如果您在 Debug模式下运行,您可以有一个条件语句来添加您想要的处理程序,或者您可以添加一个只吸收日志消息的 NullHandler。您还可以单独配置每个处理程序的级别,以便您始终看到警告和以上警告。除了主记录器之外,每个处理程序都可以有自己的级别。

您可以 refer to the tutorials关于如何更具体地使用级别、处理程序和格式。

关于python - 如何在不从代码中删除日志语句的情况下关闭它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483144/

相关文章:

logging - 有没有办法获取引发异常的行号?

php - Xdebug 探查器不工作?

php - XAMPP 和 Notepad++ 上的 Xdebug 无法连接

python - 终端在尝试提交 Git 时意外运行了命令

python - 如何从 os.walk 过滤文件(已知类型)?

python - 如何有效地识别 pandas 数据框中的字符串并对其进行分类?

go - 有什么方法可以使用 golang std 库来格式化日志(如下所述)?

未生成 mysql-slow-log 文件

php-debug 控制台未在 Atom 中显示

python - Sympy 重新配置随机种子