如何禁用标准错误流的日志记录?
如何在Python中关闭标准错误流上的日志记录?下面这个方法不起作用:
import logging
logger = logging.getLogger()
logger.removeHandler(sys.stderr)
logger.warning('foobar') # emits 'foobar' on sys.stderr
22 个回答
82
你可以使用:
logging.basicConfig(level=your_level)
其中 your_level 可以是以下这些:
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL
所以,如果你把 your_level 设置为 logging.CRITICAL,那么你只会收到那些严重级别的消息,这些消息是由:
logging.critical('This is a critical error message')
如果把 your_level 设置为 logging.DEBUG,那么所有级别的日志信息都会显示出来。
想了解更多细节,可以查看 日志记录示例。
同样地,要为每个处理器(Handler)更改级别,可以使用 Handler.setLevel() 函数。
import logging
import logging.handlers
LOG_FILENAME = '/tmp/logging_rotatingfile_example.out'
# Set up a specific logger with our desired output level
my_logger = logging.getLogger('MyLogger')
my_logger.setLevel(logging.DEBUG)
# Add the log message handler to the logger
handler = logging.handlers.RotatingFileHandler(
LOG_FILENAME, maxBytes=20, backupCount=5)
handler.setLevel(logging.CRITICAL)
my_logger.addHandler(handler)
153
我使用:
logger = logging.getLogger()
logger.disabled = True
... whatever you want ...
logger.disabled = False
247
我找到了解决办法:
logger = logging.getLogger('my-logger')
logger.propagate = False
# now if you use logger it will not log to console.
这个方法可以阻止日志信息被发送到上层的记录器,也就是包含控制台日志的那个记录器。