如何在 python 日志模块中指定级别?
How to specify levels in python logging module?
我需要两个处理程序。一个用于文件日志记录,另一个用于控制台中的流日志记录。我需要为每个处理程序指定级别。请注意,我的级别将类似于以下级别。
流处理程序 --> 信息
文件处理程序 --> 警告、错误、严重
这是我的代码。
# Create a custom logger
logger = logging.getLogger('DBMQ')
logger.setLevel(logging.DEBUG)
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
logger.addHandler(stream_handler)
file_handler = logging.FileHandler('./data/file.log')
file_handler.setLevel(logging.WARNING)
logger.addHandler(file_handler)
现在,它必须这样操作:
logger.debug('hey') # Nothing should happen
logger.info('hey') # only stream handler should log this message
logger.warning('hey') # only file handler should log this message but the stream does too
logger.error('hey') # only file handler should log this message but the stream does too
logger.critical('hey') # only file handler should log this message but the stream does too
我需要禁止流处理程序记录 warning
、error
和 critical
日志级别。有什么方法可以过滤这个处理程序吗?
您可以创建自己的处理程序:
logger = logging.getLogger('DBMQ')
logger.setLevel(logging.DEBUG)
class MyStreamHandler(logging.StreamHandler):
def emit(self, record):
if record.levelno == self.level:
super().emit(record)
stream_handler = MyStreamHandler()
stream_handler.setLevel(logging.INFO)
logger.addHandler(stream_handler)
file_handler = logging.FileHandler('./data/file.log')
file_handler.setLevel(logging.WARNING)
logger.addHandler(file_handler)
“关卡”系统不适用于 disable/enable 单个“关卡”。
https://docs.python.org/3/library/logging.html#logging-levels
“级别”是一个整数值。如果消息的等级超过logger/handler级,就会显示出来。就这么简单。
如果您需要其他逻辑,唯一的方法是实现您自己的处理程序。
我需要两个处理程序。一个用于文件日志记录,另一个用于控制台中的流日志记录。我需要为每个处理程序指定级别。请注意,我的级别将类似于以下级别。
流处理程序 --> 信息
文件处理程序 --> 警告、错误、严重
这是我的代码。
# Create a custom logger
logger = logging.getLogger('DBMQ')
logger.setLevel(logging.DEBUG)
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.INFO)
logger.addHandler(stream_handler)
file_handler = logging.FileHandler('./data/file.log')
file_handler.setLevel(logging.WARNING)
logger.addHandler(file_handler)
现在,它必须这样操作:
logger.debug('hey') # Nothing should happen
logger.info('hey') # only stream handler should log this message
logger.warning('hey') # only file handler should log this message but the stream does too
logger.error('hey') # only file handler should log this message but the stream does too
logger.critical('hey') # only file handler should log this message but the stream does too
我需要禁止流处理程序记录 warning
、error
和 critical
日志级别。有什么方法可以过滤这个处理程序吗?
您可以创建自己的处理程序:
logger = logging.getLogger('DBMQ')
logger.setLevel(logging.DEBUG)
class MyStreamHandler(logging.StreamHandler):
def emit(self, record):
if record.levelno == self.level:
super().emit(record)
stream_handler = MyStreamHandler()
stream_handler.setLevel(logging.INFO)
logger.addHandler(stream_handler)
file_handler = logging.FileHandler('./data/file.log')
file_handler.setLevel(logging.WARNING)
logger.addHandler(file_handler)
“关卡”系统不适用于 disable/enable 单个“关卡”。 https://docs.python.org/3/library/logging.html#logging-levels
“级别”是一个整数值。如果消息的等级超过logger/handler级,就会显示出来。就这么简单。
如果您需要其他逻辑,唯一的方法是实现您自己的处理程序。