如何正确格式化 python 日志格式化程序?

2024-01-25

我尝试按照 Python 日志格式化程序输出字符串的方式进行格式化。我写了一个简单的例子来说明这个问题:

import logging
from pathlib import Path

# create auxiliary variables
loggerName = Path(__file__).stem

# create logging formatter
logFormatter = logging.Formatter(fmt=' %(name)s :: %(levelname)s :: %(message)s')

# create logger
logger = logging.getLogger(loggerName)
logger.setLevel(logging.DEBUG)

# create console handler
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.WARNING)
consoleHandler.setFormatter(logFormatter)

# Add console handler to logger
logger.addHandler(consoleHandler)

# Test
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

该脚本将给出一个没有正确格式的输出:

logger :: WARNING :: warn message
logger :: ERROR :: error message
logger :: CRITICAL :: critical message

我想更改格式以保持日志记录左侧的顺序:

logger :: WARNING  :: warn message
logger :: ERROR    :: error message
logger :: CRITICAL :: critical message

格式字符串使用Python的正则%-格式化,也称为printf- 样式格式。您可以在文档中阅读更多相关信息https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting您正在寻找的是最小字段宽度与- flag:

'-'转换后的值左调整

So, with

logFormatter = logging.Formatter(fmt=' %(name)s :: %(levelname)-8s :: %(message)s')

你将得到以下输出:

 test :: WARNING  :: warn message
 test :: ERROR    :: error message
 test :: CRITICAL :: critical message
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确格式化 python 日志格式化程序? 的相关文章

随机推荐