为什么记录器没有记录自己的名字?

时间:2017-12-15 10:31:51

标签: python logging

我正在尝试复制以下代码段中发生的情况。在这里,我有两个不同的记录器尝试记录一些信息。

每个都配置为将日志记录信息打印到控制台。代码的问题是它没有在消息之前打印记录器的名称,这里出了什么问题?

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

1 个答案:

答案 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