我想格式化记录器与括号和左对齐的文本。
formatter = logging.Formatter('[%(asctime)s] [%(levelname)-8s] [%(funcName)-12s] %(message)s')
结果如下所示
[2019-09-13 16:22:56,050] [INFO ] [main ] Message 1
[2019-09-13 16:22:56,050] [DEBUG ] [do_debug ] Message 2
[2019-09-13 16:22:56,050] [WARNING ] [do_warning ] Message 3
但是我想要这样的东西
[2019-09-13 16:22:56,050] [INFO] [main] Message 1
[2019-09-13 16:22:56,050] [DEBUG] [do_debug] Message 2
[2019-09-13 16:22:56,050] [WARNING] [do_warning] Message 3
发布于 2020-02-01 21:39:52
这很容易做到,如下面的示例所示:
import logging
logger = logging.getLogger(__name__)
def do_debug():
logger.debug('Message 2')
def do_warning():
logger.warning('Message 3')
def main():
logger.info('Message 1')
do_debug()
do_warning()
def fmt_filter(record):
record.levelname = '[%s]' % record.levelname
record.funcName = '[%s]' % record.funcName
return True
if __name__ == '__main__':
FMT = '[%(asctime)s] %(levelname)-10s %(funcName)-12s %(message)s'
f = logging.Formatter(FMT)
h = logging.StreamHandler()
h.setFormatter(f)
logger.setLevel(logging.DEBUG)
logger.addHandler(h)
logger.addFilter(fmt_filter)
main()
运行时,上面的脚本打印:
[2020-02-01 21:36:48,758] [INFO] [main] Message 1
[2020-02-01 21:36:48,758] [DEBUG] [do_debug] Message 2
[2020-02-01 21:36:48,774] [WARNING] [do_warning] Message 3
你应该能够使上面的例子适应你的特定需求,例如你在哪里应用过滤器,你使用什么处理程序,等等。
https://stackoverflow.com/questions/57925917
复制