51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 786|回复: 1
打印 上一主题 下一主题

[python] 打印彩色日志的方法之Python

[复制链接]
  • TA的每日心情
    无聊
    14 小时前
  • 签到天数: 939 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-12-30 11:30:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    安装 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")



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-28 23:15 , Processed in 0.069906 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表