如果整个代码库中都有日志记录语句,我该如何设置记录器,以便在将代码部署到生产环境时不必注释掉对记录器的每次调用?
这是我当前的代码:
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/