我试图复制以下代码段中发生的情况.在这里,我有两个不同的记录器尝试记录一些信息.
每个都配置为将日志记录信息打印到控制台.代码的问题是它没有在消息之前打印记录器的名称,这里出了什么问题?
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')
Run Code Online (Sandbox Code Playgroud)
我得到的输出是,
log statement
log statement
Run Code Online (Sandbox Code Playgroud)
我期待的是
logger1: log statement
logger2: log statement
Run Code Online (Sandbox Code Playgroud)
您可能希望向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')
Run Code Online (Sandbox Code Playgroud)
如果您希望logger1和logger2的行为不同,您可以创建2个不同的StreamHandler
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |