Python 打印彩色日志的方法

发表于:2022-12-30 09:40

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:somenzz    来源:Python七号

#
Python
分享:
  安装 coloredlogs
  pip install coloredlogs
  使用
  首先,和正常打印日志一样,我们创建一个 logger
  logging.basicConfig()
  logger = logging.getLogger(name='mylogger')
  然后,把 logger 安装到 coloredlogs:
  coloredlogs.install(logger=logger)
  logger.propagate = False
  logger.propagate = False 确保 coloredlogs 不会将我们的日志事件传递给根 logger,这可以防止我们重复记录每个事件。
  我们想为我们的控制台输出添加一些样式,可以在这里定义:
  coloredFormatter = coloredlogs.ColoredFormatter(
      fmt='[%(name)s] %(asctime)s %(funcName)s %(lineno)-3d  %(message)s',
      level_styles=dict(
          debug=dict(color='white'),
          info=dict(color='blue'),
          warning=dict(color='yellow', bright=True),
          error=dict(color='red', bold=True, bright=True),
          critical=dict(color='black', bold=True, background='red'),
      ),
      field_styles=dict(
          name=dict(color='white'),
          asctime=dict(color='white'),
          funcName=dict(color='white'),
          lineno=dict(color='white'),
      )
  )
  接下来就和正常使用日志一样了,配置一个流处理器,让日志显示在控制台:
  ch = logging.StreamHandler(stream=sys.stdout)
  ch.setFormatter(fmt=coloredFormatter)
  logger.addHandler(hdlr=ch)
  logger.setLevel(level=logging.DEBUG)
  接下来就可以输入日志信息了:
  logger.debug(msg="this is a debug message")
  logger.info(msg="this is an info message")
  logger.warning(msg="this is a warning message")
  logger.error(msg="this is an error message")
  logger.critical(msg="this is a critical message")
  效果图如下:
  完整代码如下:
  import logging
  import coloredlogs
  import sys
  ## 配置 logger
  logging.basicConfig()
  logger = logging.getLogger(name='mylogger')
  coloredlogs.install(logger=logger)
  logger.propagate = False
  ## 配置 颜色
  coloredFormatter = coloredlogs.ColoredFormatter(
      fmt='[%(name)s] %(asctime)s %(funcName)s %(lineno)-3d  %(message)s',
      level_styles=dict(
          debug=dict(color='white'),
          info=dict(color='blue'),
          warning=dict(color='yellow', bright=True),
          error=dict(color='red', bold=True, bright=True),
          critical=dict(color='black', bold=True, background='red'),
      ),
      field_styles=dict(
          name=dict(color='white'),
          asctime=dict(color='white'),
          funcName=dict(color='white'),
          lineno=dict(color='white'),
      )
  )
  ## 配置 StreamHandler
  ch = logging.StreamHandler(stream=sys.stdout)
  ch.setFormatter(fmt=coloredFormatter)
  logger.addHandler(hdlr=ch)
  logger.setLevel(level=logging.DEBUG)
  ## output
  logger.debug(msg="this is a debug message")
  logger.info(msg="this is an info message")
  logger.warning(msg="this is a warning message")
  logger.error(msg="this is an error message")
  logger.critical(msg="this is a critical message")
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号