我正在尝试复制以下代码段中发生的情况。在这里,我有两个不同的记录器尝试记录一些信息。
每个都配置为将日志记录信息打印到控制台。代码的问题是它没有在消息之前打印记录器的名称,这里出了什么问题?
import logging
import sys
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
logger1 = logging.getLogger("logger1")
logger1.setLevel(logging.DEBUG)
logger1.addHandler(ch)
logger2 = logging.getLogger("logger2")
logger2.setLevel(logging.DEBUG)
logger2.addHandler(ch)
logger1.debug('log statement')
logger2.debug('log statement')
我得到的输出是,
log statement
log statement
我期待的是
logger1: log statement
logger2: log statement
答案 0 :(得分:5)
您可能需要在StreamHandler中添加格式化程序:
import logging
import sys
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger1 = logging.getLogger("logger1")
logger1.setLevel(logging.DEBUG)
logger1.addHandler(ch)
logger2 = logging.getLogger("logger2")
logger2.setLevel(logging.DEBUG)
logger2.addHandler(ch)
logger1.debug('log statement')
logger2.debug('log statement')
如果您希望logger1和logger2的行为不同,您可以创建2个不同的StreamHandler