Python3,好看的外(shen)表(cai)千篇一律,炫彩的日志万里挑一。

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 这下好了, 只根据输出的日志颜色, 就会判断等级缺陷了。

1、引言


小屌丝:鱼哥, 我今天被炫到了。

小鱼:怎么了,你还能被旋到了?

小屌丝对啊, 被炫到了,很不是滋味。

小鱼:不应该啊, 你这酒量,不都是 “青岛不倒我不倒,雪花不飘我不飘,半斤不是酒,一斤扶墙走…”,

小屌丝:打住,合着你说的是喝酒啊?

小鱼:嗯?? 那你说的不是喝酒?

小屌丝:我说的是被技能给炫到了

小鱼:哦,那不足为奇~

小屌丝:… 至少我也是新生代农民工…

小鱼:哦,那你自己搞一个更炫的, 闪亮他们的眼…

小屌丝:我要是能搞得出啦, 就不在这跟你唠嗑了。

小鱼:那是啥嘞?

小屌丝:就是调试的控制台,输出的日志是彩色的。

小鱼:就这???

就这.JPEG


小屌丝:对啊,就这。

小鱼:唉,现在是不是午饭时间了。

小屌丝:行, 整完了,咱俩去旋一个。

小鱼:你看看, 这刚喝完,又的去旋,总这样,身体也吃不消啊。

CcViLYsE25pgYL3Xe5o0u4H5BkpbuSuG.gif


小屌丝: 好,整…

小鱼:好嘞。 那咱十分钟后,老地方见。


2、代码实战


2.1 库介绍


关于coloredlogs,这里,我直接引用官网的内容:


The coloredlogs package enables colored terminal output for Python’s logging module.
The ColoredFormatter class inherits from logging.
Formatter and uses ANSI escape sequences to render your logging messages in color.
It uses only standard colors so it should work on any UNIX terminal.
It’s currently tested on Python 2.7, 3.5+ and PyPy (2 and 3).


这里,我用汉语简单概括的唠叨一下(是时候展示我的英文水平了):


coloredlogs 包为 Python 的日志记录模块启用彩色终端输出。
类继承自日志记录。格式化程序并使用 ANSI 转义序列以彩色呈现日志记录消息。
它仅使用 标准颜色,因此它应该适用于任何UNIX终端。
可以在python2.7 和3.5及更高版本使用。


所以, 是不是觉得,很easy呢。

如果掌握了此方法, 以后在调试日志的时候, 根据颜色值,来判断错误的等级,是不是更高大上呢。


话不多说,直接安装,咱来实战。


2.2 库安装


涉及到第三方库,肯定就需要安装

老规矩,pip 安装


pipinstallcoloredlogs


然后就是等待着安装。

其它安装方式,直接看这两篇:

安装完成,就是这个样子:

image.png

2.3 代码示例


2.3.1 demo


我先整一个简单的demo,来看看效果

# -*- coding:utf-8 -*-# @Time   : 2023-02-22# @Author : Carl_DJimportcoloredlogs, logging# 创建logger.logger=logging.getLogger(__name__)
#设置等级为 DEBUGcoloredlogs.install(level='DEBUG')
coloredlogs.install(level='DEBUG', logger=logger)
# 输出logger.debug("this is a debugging message")
logger.info("this is an informational message")
logger.warning("this is a warning message")
logger.error("this is an error message")
logger.critical("this is a critical message")


结果展示

image.png



2.3.2 实战


有了上面的简单demo, 我们给封装一下,便于后期在框架中直接被调用。


代码示例

# -*- coding:utf-8 -*-# @Time   : 2023-02-22# @Author : Carl_DJ'''实现功能:    输出的日志,为彩色'''importloggingimportcoloredlogsimportsys#logger 配置logging.basicConfig()
logger=logging.getLogger(name='logger')
#logger安装到coloredlogscoloredlogs.install(logger=logger)
#保证coloredlogs 不会将日志事件传递给跟logger,防止重复记录每个事件logger.propagate=False#输入logger字体颜色 配置coloredFormatter=coloredlogs.ColoredFormatter(
fmt='[%(name)s] %(asctime)s %(funcName)s %(lineno)-3d  %(message)s',
#定义logger不同级别,输出的字体颜色level_styles=dict(
debug=dict(color='yellow'),
info=dict(color='green'),
warning=dict(color='blue',bright=True),
error=dict(color='red',bold=True,bright=True),
critical=dict(color='black',bold=True,background='cyan'),
    ),
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.INFO)
#设置输出文案内容logger.debug(msg="logger.debug test!")
logger.info(msg="logger.info test!")
logger.warning(msg="logger.warning test!")
logger.error(msg="logger.error test!")
logger.critical(msg="logger.critical test!")


结果展示

image.png



3、总结


看到这里, 今天的分享,就差不多该结束了。

关于coloredlogs的日常使用,掌握这篇就差不多了。

其实,在平时的工作中,并没有太多的时间去搞这么花里胡哨的,

但是,既然有这个库,那我们就多掌握一些。


好了,也不啰嗦了, 再唠叨,小屌丝也该着急了。


我是奕然


  • CSDN 博客专家;
  • 阿里云 专家博主;
  • 51CTO 博客专家;
  • 51认证讲师;
  • 金牌面试官&面试培训师;


关注我,带你学习更多更有趣的Python知识。

相关实践学习
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
目录
相关文章
|
2月前
|
C++ 开发者 Python
实现Python日志点击跳转到代码位置的方法
本文介绍了如何在Python日志中实现点击跳转到代码位置的功能,以提升调试效率。通过结合`logging`模块的`findCaller()`方法记录代码位置信息,并使用支持点击跳转的日志查看工具(如VS Code、PyCharm),开发者可以从日志直接点击链接定位到出错代码,加快问题排查。
40 2
|
7天前
|
运维 关系型数据库 分布式数据库
PolarDB产品使用问题之表更新频繁,读取频繁,导致有很多慢日志,时间还很高,该怎么办
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
21天前
|
Python
python3获取内存和cpu利用率记录日志文件psutil
python3获取内存和cpu利用率记录日志文件psutil
27 1
|
23天前
|
存储 SQL NoSQL
ClickHouse(16)ClickHouse日志表引擎Log详细解析
ClickHouse的Log引擎系列适用于小数据量(<1M行)的表,包括StripeLog、Log和TinyLog。这些引擎将数据存储在磁盘,追加写入,不支持更新和索引,写入非原子可能导致数据损坏。Log和StripeLog支持并发访问和并行读取,Log按列存储,StripeLog将所有数据存于一个文件。TinyLog是最简单的,不支持并行读取和并发访问,每列存储在单独文件中。适用于一次性写入、多次读取的场景。
35 0
|
2月前
|
安全 Python
Python 多进程日志输出到同一个文件并实现日志回滚
Python 多进程想要实现将日志输出到同一个文件中,使用同一个日志句柄,且日志需要按照日期,大小回滚。
|
2月前
|
监控 Python
Python中精通异常日志记录
Python中精通异常日志记录
19 0
|
2月前
|
SQL DataWorks 安全
DataWorks产品使用合集之DataWorks资源里python运行时候,查看中途打印日志如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
32 0
|
2月前
|
监控 安全 中间件
Python 日志处理详解:从基础到实战
【2月更文挑战第5天】Python 日志处理详解:从基础到实战
115 2
|
2月前
|
存储 数据库 Python
Loguru:Python中强大的日志库
Loguru:Python中强大的日志库
200 2
|
2月前
|
消息中间件 测试技术 Python
Python使用多线程解析超大日志文件
Python使用多线程解析超大日志文件
111 0