彩色化输出你的print——用loguru替换print

        在python中我们经常要用print输出一些打印信息,一旦打印信息过多,由于信息没有颜色标记,重点不够突出,想要关闭也不容易找到位置。

        这些问题,有了loguru就可以迎刃而解了。

        loguru是一款日志记录工具,可以把日志用彩色的方式输出到控制台终端,也可以同时输出到文件中。但是直接安装的loguru不能直接代替print,因为参数不一样。

        我们要把loguru稍微改造一下,以完全代替print实现彩色打印(当然也可以同时记录到文件中)。

        首先安装loguru模块:

        pip install loguru

        然后找到loguru安装的目录,一般是在python环境的Lib\site-packages\loguru目录。

在该目录找到_logger.py,做如下的修改:

        1.在头部增加import

          from .my_print import my_print

        2.修改下面几个函数,用于彩色输出

    def debug(__self, __message, *args, **kwargs):  # noqa: N805
        r"""Log ``message.format(*args, **kwargs)`` with severity ``'DEBUG'``."""
        __message=(my_print(__message,*args))
        __self._log("DEBUG", False, __self._options, __message, args, kwargs)

    def info(__self, __message, *args, **kwargs):  # noqa: N805
        r"""Log ``message.format(*args, **kwargs)`` with severity ``'INFO'``."""
        __message=(my_print(__message,*args))
        __self._log("INFO", False, __self._options, __message, args, kwargs)

    def warning(__self, __message, *args, **kwargs):  # noqa: N805
        r"""Log ``message.format(*args, **kwargs)`` with severity ``'WARNING'``."""
        __message=(my_print(__message,*args))
        __self._log("WARNING", False, __self._options, __message, args, kwargs)

    def error(__self, __message, *args, **kwargs):  # noqa: N805
        r"""Log ``message.format(*args, **kwargs)`` with severity ``'ERROR'``."""
        __message=(my_print(__message,*args))
        __self._log("ERROR", False, __self._options, __message, args, kwargs)

        3.在loguru目录下建立my_print.py模块,内容如下:

#my_print.py
import io


def my_print(*args, sep=' ', end='', file=None):
    result = sep.join(str(arg) for arg in args) + end

    # 创建一个字符串缓冲区
    buffer = io.StringIO()
    print(result, end=end,file=buffer)


    # 读取缓冲区的内容
    content = buffer.getvalue()


    # 关闭缓冲区
    buffer.close()
    return content

接下来,你就可以用

logger.debug/info/warning/error直接替换print,输出彩色的打印了。

当然,你可以定义一个接口模块,例如my_loguru.py

from loguru import logger
import sys

# 清空所有设置
logger.remove()

# 添加控制台输出的格式,sys.stdout为输出到屏幕;关于这些配置还需要自定义请移步官网查看相关参数说明
logger.add(sys.stdout,
                format="<green>{time:YYYYMMDD HH:mm:ss}</green>|"  # 颜色>时间
                       "<level>{message}</level>| "  # 日志内容                
                       "<cyan>{module}</cyan>"  # 模块名.方法名
                       ":<cyan>{line}</cyan>"  # 行号
                )
def set_log_file(file):                
    logger.add(file,
                format="<green>{time:YYYYMMDD HH:mm:ss}</green>|"  # 颜色>时间
                       "<level>{message}</level>| "  # 日志内容                
                       "<cyan>{module}</cyan>"  # 模块名.方法名
                       ":<cyan>{line}</cyan>"  # 行号
                ,enqueue=True)               
PRINT_INFO=logger.info
PRINT_DEBUG=logger.debug
PRINT_WARNING=logger.warning
PRINT_ERROR=logger.error

        然后

from my_loguru import PRINT_INFO,PRINT_DEBUG,PRINT_WARNING,PRINT_ERROR

用上面这4个接口替换print,实例如下:

import sys
from my_loguru import PRINT_INFO,PRINT_DEBUG,PRINT_WARNING,PRINT_ERROR

PRINT_INFO('12345','hello',eval('1+2*3'))
PRINT_DEBUG('12345','from')
PRINT_WARNING('12345','Tom')
PRINT_ERROR('12345','Cat')

        输出的效果如下图:

        和print接口用法完全一致,支持可变参数,可以直接替换print,同时可以用颜色突出重点,同时输出时间戳和打印语句所在的位置。完美收工!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geastwind1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值