关于python:tabulate结合loguru打印出美观又方便查找的日志记录

33次阅读

共计 2950 个字符,预计需要花费 8 分钟才能阅读完成。

在开发过程中常常碰到在本地环境无奈实现联调测试的状况,必须到对立的联机环境对接其余零碎测试。往往是呈现了 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 命令的多种玩法,以前居然只用它来测试网速!

正文完
 0