tabulate结合loguru打印出美观又方便查找的日志记录!

在开发过程中经常碰到在本地环境无法完成联调测试的情况,必须到统一的联机环境对接其他系统测试。往往是出现了BUG难以查找数据记录及时定位到错误出现的位置。

【阅读全文】

面对这种情况可能情况可能是一个简单的BUG导致的,但是定位问题往往就需要很长的时间。在python编程中推荐非标准库tabulate,它可以将程序运行过程中产生的数据记录格式化的打印出来很方便我们定位问题。

通过结合简单的日志非标准库loguru可以很快的打印出又美观又实用的日志记录,loguru非标准库其实在一些文章的源码示例中我们已经在使用了。

安装过程还是通过pip的方式直接安装,由于loguru、tabulate都是python的非标准库,因此,没有安装的话需要安装一下。默认我们都使用的清华大学的python镜像站,大家可以选择其他的镜像站都可以。

pip install loguru -i https://pypi.tuna.tsinghua.edu.cn/simple/

pip install tabulate - i https://pypi.tuna.tsinghua.edu.cn/simple/

做好准备工作以后将loguru、tabulate模块都导入进来就OK了,没有其他复杂的操作!

# It's a shortcut to create a logger with the default configuration.
from loguru import logger

# It's importing the function `tabulate` from the module `tabulate`.
from tabulate import tabulate

关于非标准库tabulate,它的打印模式其实有很多,我们平常使用到的可能就是几种比较常见的,下面将tabulate所有的打印模式全部列举出来,有需要的大佬可以参考。

'''
"plain"
"simple"
"github"
"grid"
"fancy_grid"
"pipe"
"orgtbl"
"jira"
"presto"
"psql"
"rst"
"mediawiki"
"moinmoin"
"youtrack"
"html"
"latex"
"latex_raw"
"latex_booktabs"
"textile"
'''

我们选择其中的一种'grid'模式来看看效果如何,因为这种模式打印的数据记录也是比较常见的。下面创建一个函数tab_grid_log打印一段数组形式的数据记录。

def tab_grid_log():
    """
    > This function takes a list of lists and returns a list of lists with the log of each element
    """
    # It's defining the header of the table.
    header = [u'姓名', u'年龄', u'班级', u'成绩', u'表现']
    # It's defining a list of lists.
    table = [('Python', 20, 1710, 98, 5.0), ('Java', 22, 1810, 98, 4.9)]
    # It's printing the table with the `grid` format.
    logger.info(tabulate(table, headers=header, tablefmt='grid'))


tab_grid_log()


# 2022-09-17 18:33:00.472 | INFO     | __main__:tab_grid_log:66 - +--------+--------+--------+--------+--------+
# | 姓名   |   年龄 |   班级 |   成绩 |   表现 |
# +========+========+========+========+========+
# | Python |     20 |   1710 |     98 |    5   |
# +--------+--------+--------+--------+--------+
# | Java   |     22 |   1810 |     98 |    4.9 |
# +--------+--------+--------+--------+--------+
#
# Process finished with exit code 0

使用grid模式的打印的数据记录就是宫格形式很便于查找日志中的数据记录,也是我们经常在日志记录中使用的一种打印方法。

接下来我们随便选择一种模式再次进行打印,这里就选择html模式来看看效果吧,这种模式之前没有使用过我很好奇它会打印出什么样的效果。

def tab_html_log():
    """
    > This function takes a log file and returns a html table of the log file
    """
    # It's defining the header of the table.
    header = [u'姓名', u'年龄', u'班级', u'成绩', u'表现']
    # It's defining a list of lists.
    table = [('Python', 20, 1710, 98, 5.0), ('Java', 22, 1810, 98, 4.9)]
    # It's printing the table with the `html` format.
    logger.info(tabulate(table, headers=header, tablefmt='html'))


tab_html_log()

# 2022-09-17 18:37:50.383 | INFO     | __main__:tab_html_log:87 - <table>
# <thead>
# <tr><th>姓名  </th><th style="text-align: right;">  年龄</th><th style="text-align: right;">  班级</th><th style="text-align: right;">  成绩</th><th style="text-align: right;">  表现</th></tr>
# </thead>
# <tbody>
# <tr><td>Python</td><td style="text-align: right;">    20</td><td style="text-align: right;">  1710</td><td style="text-align: right;">    98</td><td style="text-align: right;">   5  </td></tr>
# <tr><td>Java  </td><td style="text-align: right;">    22</td><td style="text-align: right;">  1810</td><td style="text-align: right;">    98</td><td style="text-align: right;">   4.9</td></tr>
# </tbody>
# </table>

从打印结果可以看出来了,使用html模式的打印时实际上是生成html的源码,这还是很智能的包括style的样式属性也填充了。

【精彩推荐】

问题记录:为什们有的python底层代码块函数却只有一个pass?

我使用pangu模块做了一个文本格式化小工具!

ping命令的多种玩法,以前竟然只用它来测试网速!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:tabulate结合loguru打印出美观又方便查找的日志记录! - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 记住这些windows网络操作命令,轻松搞定自己的电脑网络!

    windows操作系统中的网络操作主要是网络的配置、网络连接的监听、网络的路由跟踪、DNS服务器解析等等。 【阅读全文】 针对上面的这几项操作,整理了关于windows网络操作相关的使用方法。 1、网络配置 网络配置主要有ip地址、子网掩码、默认网关、DNS服务器地址,一般情况下,在公网的状态下这些地址都是自动获取的不需要我们进行特别的配置。 但是,在我们的…

    2023年4月2日
    00
  • 小王,给这2000个客户发一下节日祝福的邮件

    【阅读全文】演示示例使用QQ邮箱发送邮件,先获取自己的QQ邮箱的授权码。因为后面发送邮件时需要使用自己的授权码作为邮箱的密码登录邮箱最后达到发送邮件的目的。 将UI处理的相关的界面包导入进来 from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * #…

    2023年4月2日
    00
  • python中最简单的turtle绘图:奥运五环

    为什么说奥运五环的绘制是最简单的,实际上它的绘制过程就是通过画笔画出五个相同大小的圆圈即可。不同的是圆圈的位置不同的。 阅读全文 开始之前,我特地去找了turtle的官网地址贴在下面,其实学习一个技术点官网的作用还是非常重要的。毕竟你在网上找到大量的资料都是二手资料。 因此,你可能并不了解这个技术点产生的初衷,最后,一个技术点就成以讹传讹。所以,鼓励大家学习…

    2023年4月2日
    00
  • python实现excel数据与mysql数据库互通有无

    【阅读全文】 python在制作一些小工具上本身就有着得天独厚的优势,大多数非标准库的应用只需要进行简单的安装即可使用。 比如:使用python将excel中的数据导入到mysql数据库表中,或是将mysql数据库表中的数据直接导出为excel都只需要简单的几行代码就可以完成,假如使用Java来做这件事强那可就有些复杂了呢。 话不多说,接下来直接进入正题..…

    2023年4月2日
    00
  • 自动化办公:手机号码提取器,使用正则表达式轻松提取文本文件中的手机号码

    关于手机号码的提取,其实真正有用的部分就是re模块提供的正则表达式。使用正则表达式就能轻松地匹配到手机号码,由于功能比较简单这次并没有采用UI界面的方式来实现该功能。 【阅读全文】 第一步:写一个控制台输入函数。 path = input(‘请输入需要提取手机号码的文件路径(.txt):n’) 第二步:读取包含手机号码的文本文件。 def read_text…

    2023年4月2日
    00
  • 一个help函数解决了python的所有文档信息查看

    在python中的交互式命令行中提供了help函数来查询各个模块,或是公共函数,或是模块下的函数接口等都可以使用help函数来查看接口文档。 【阅读全文】 不过要查看这样的文档还是得有些英文功底的,包含函数、模块、变量的介绍都是通过英文来介绍的。 1、模块文档查看 打开控制台,这里使用的控制台工具是cmder,看起来比默认的cmd命令行好看的多。 比如说需要…

    2023年4月2日
    00
  • 周末自制了一个批量图片水印添加器!

    前段时间写了个比较简单的批量水印添加的python实现方式,将某个文件夹下面的图片全部添加上水印。 【阅读全文】 今天正好有时间就做了一个UI应用的封装,这样不需要知道python直接下载exe的应用程序使用即可。 有需要’批量图片水印添加器’的朋友可以直接跳过到文章末尾获取下载方式,下载.exe的可执行应用直接使用即可,下面主要来介绍一下实现过程。 首先,…

    2023年4月2日
    00
  • GUI 应用:socket 网络聊天室

    在这个周末刚刚写出来的python桌面应用–网络聊天室,主要通过pyqt5作为桌面应用框架,socket作为网络编程的框架,从而实现包括客户端和服务端的网络聊天室的GUI应用,希望可以一起学习、一起进步! 应用包括服务端server_ui.py、客户端client_ui.py两个python模块实现,并且在pyqt5的使用过程中都使用QThread多线程应…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部