如何正确格式化 python 日志格式化程序?
How to properly format the python logging formatter?
我尝试格式化我的 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 的文档中阅读更多相关信息您正在寻找的是与 -
标志配对的最小字段宽度:
'-'
The converted value is left adjusted
所以,
logFormatter = logging.Formatter(fmt=' %(name)s :: %(levelname)-8s :: %(message)s')
您将得到以下输出:
test :: WARNING :: warn message
test :: ERROR :: error message
test :: CRITICAL :: critical message
我尝试格式化我的 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 的文档中阅读更多相关信息您正在寻找的是与 -
标志配对的最小字段宽度:
'-'
The converted value is left adjusted
所以,
logFormatter = logging.Formatter(fmt=' %(name)s :: %(levelname)-8s :: %(message)s')
您将得到以下输出:
test :: WARNING :: warn message
test :: ERROR :: error message
test :: CRITICAL :: critical message