Python - 实现logging根据日志级别输出不同颜色

news2024/12/23 5:01:33

文章目录

  • 一、完整代码
  • 二、代码解释
  • 三、附:自定义颜色对应代码

  • 前段时间因为工作需要脚本打印不同颜色的日志。查找了网上的一些方法,大部分都需要再安装第三方模块。
  • 后来选择采用比较简易的办法,类似于print()函数自定义内容颜色
  • 这种方式的缺陷是只修改了日志内容的颜色。可以根据自身的需求选择使用哪种方式。

一、完整代码

#!/usr/bin/python
# -*- coding:utf-8 -*-

import logging


class LogColor:
    """
    根据不同的日志级别,打印不颜色的日志
    info:绿色
    warning:黄色
    error:红色
    debug:灰色
    """
    # logging日志格式设置
    logging.basicConfig(level=logging.DEBUG,
                        format='%(asctime)s - %(levelname)s: %(message)s')

    @staticmethod
    def info(message: str):
    	# info级别的日志,绿色
        logging.info("\033[0;32m" + message + "\033[0m")

    @staticmethod
    def warning(message: str):
    	# warning级别的日志,黄色
        logging.warning("\033[0;33m" + message + "\033[0m")

    @staticmethod
    def error(message: str):
    	# error级别的日志,红色
        logging.error("\033[0;31m"+"-" * 120 + '\n| ' + message + "\033[0m" + "\n" + "└"+"-" * 150)

    @staticmethod
    def debug(message: str):
    	# debug级别的日志,灰色
        logging.debug("\033[0;37m" + message + "\033[0m")


if __name__ == '__main__':
	# 测试代码
    LogColor.info("info日志")
    LogColor.warning("warning日志")
    LogColor.error("error日志")
    LogColor.debug("debug日志")
  • 运行之后的效果在这里插入图片描述

二、代码解释

  1. logging是Python自带的日志输出模块
    import logging
    
    • logging的日志分为以下五个级别
    logging.critical("critical")
    logging.info("info")
    logging.warning("warning")
    logging.error("error")
    logging.debug("debug")
    
    • 运行后
      在这里插入图片描述
  2. logging.basicConfig()是用于设置logging日志输出格式的方法
    logging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(levelname)s: %(message)s')
    
    • 特别说明,debug级别的日志是默认不打印的,所以需要设置日志输出的最低界别为debug
    logging.basicConfig(level=logging.DEBUG)
    
  3. 输出的内容可设置想要的颜色
    logging.info("\033[0;32m" + message + "\033[0m")
    
    • 类似于print()
      在这里插入图片描述

三、附:自定义颜色对应代码

  • 自定内容颜色格式:
logging.info("\033[显示方式;前景颜色;背景颜色m"+ "日志内容" +"\033[0m") 
  • 显示方式

    显示方式效果
    0终端默认设置
    1高亮显示
    4使用下划线
    5闪烁
    7反白显示
    8不可见
  • 字体颜色、背景颜色

    字体色背景色颜色描述
    3040黑色
    3141红色
    3242绿色
    3343黃色
    3444蓝色
    3545紫红色
    3646青蓝色
    3747白色

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抽烟行为监测识别系统 yolov5

抽烟行为监测识别系统通过pythonyolov5网络深度学习技术,对画面中人员抽烟行为进行主动识别检测。在介绍Yolo算法之前,首先先介绍一下滑动窗口技术,这对我们理解Yolo算法是有帮助的。采用滑动窗口的目标检测算法思路非常简单,它将…

C# AForge的简单使用

AForge.NET专为计算机视觉和人工智能应用而设计,这种C#框架适用于图像处理、神经网络、遗传算法、模糊逻辑、机器学习和机器人等。 该库是一个开源项目,包括: AForge.Imaging —— 一些日常的图像处理和过滤器 AForge.Vision —— 计算机视…

【MySQL】MySQL高手是如何练成的?

MySQL什么是MySQL呢?怎样练成MySQL高手?在Linux安装MySQL问题处理Mysql 的用户管理什么是MySQL呢? Mysql 是开源的,可以定制的,采用了 GPL 协议,可以根据业务需要修改源码来开发自己的 Mysql 系统。 MySQL…

彻底弄懂图片懒加载及底层实现原理

我们都知道图片懒加载是前端性能优化比较常见的一个手段,那么,你真的了解图片懒加载吗,本文将带你从简单到复杂一步一步彻底弄懂其底层实现原理。试想一下,假设用户在访问我们的某个页面时,一开始就加载页面的全部图片…

Vue中组件通信-$attrs与$listeners

组件通信-$attrs与$listeners1.$attrs父子组件通信的一种$attrs与$listeners ---- 父子组件通信$attrs:组件实例的属性,可以获取到父亲传递的props数据(前提子组件没有通过props接受)$listeners:组件实例的属性&#x…

【AAAI2023】Ultra-High-Definition Low-Light Image Enhancement

【AAAI2023】Ultra-High-Definition Low-Light Image Enhancement: A Benchmark and Transformer-Based Method 代码:https://github.com/TaoWangzj/LLFormer 这个论文首先构建了ultra-high definition low-light (UHD-LOL)数据集&#xff0c…

Revit建模操作:地面拼花效果做法和构件上色

一、Revit中如何快速做出地面拼花效果 一般大厅地面都会采用拼花做装饰,下面给大家推荐一种快速做出拼花效果的方法。 1.在Revit中导入地面铺装的CAD图纸,通过拾取底图的线,配合绘制命令分别建立各个形状的楼板,如图1所示&#xf…

虚拟DOM与render函数

目录 一、虚拟DOM 1、虚拟DOM是什么 2、为什么要使用虚拟DOM (1)浏览器显示网页的五步过程: (2)虚拟DOM的优点 3、Diff算法 二、VNode简介 1、VNode是什么 2、VNode的作用 3、VNode的优点 4、VNode如何生成&a…

【FreeRTOS】详细讲解FreeRTOS中消息队列并通过示例讲述其用法

讲解FreeRTOS中消息队列及其用法使用消息队列的原因消息队列函数解析示例遇到的问题使用消息队列的原因 在裸机系统中,两个程序间需要共享某个资源通常使用全局变量来实现;但在含操作系统(下文就拿FreeRTOS举例)的开发中,则使用消息队列完成。…

MonekyRunner

MonekyRunner 文章目录MonekyRunner一、简介二、JDK环境变量三、配置Android SDK环境变量3.1.下载并解压:3.2.环境变量:3.3.查看MonkeyRunner:四、编写Python脚本五、运行脚本一、简介 MonkeyRunner是Android SDK中自带的工具之一&#xff0…

python3:基础语法、及6种基本数据类型、找到字典的下标 index、获取list中指定元素的位置索引

基础语法 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的 标识符 第一个字符必须是字母表中字母或下划线 _ 。 标识符的其他的部分由字母、数字和下划线组成。 标识…

Java---微服务---微服务保护Sentinel

微服务保护Sentinel1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.超时处理1.1.3.仓壁模式1.1.4.断路器1.1.5.限流1.1.6.总结1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel1.4.微服务整合Sentinel2.流量控制2.1.簇点链路2.1.快…

【自然语言处理】基于sklearn-crfsuite进行命名实体识别

基于sklearn-crfsuite进行命名实体识别0. 条件随机场1. 训练数据2. 特征提取3. 训练一个CRF模型4. 评估5. 超参数优化6. 检查参数空间7. 检查在测试数据上的最优估计器8.检查分类器学到了什么东西9.检查模型权重10. 定制化11.在控制台中进行格式化参考资料本文中,针…

一种前端无源码定制化开发能力专利解读

背景 目前市面上一些web前端工程在打包发布之前都会进行代码混淆加密。代码混淆(Obfuscated code)是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代…

Leetcode刷题Day38-------------------动态规划

Leetcode刷题Day38-------------------动态规划 1. 理论基础 文章链接:https://programmercarl.com/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html视频链接:https://www.bilibili.com/video/BV13Q4y197Wg题目链接&a…

GBASE荣获“2022证券基金行业信息技术应用创新联盟年度优秀成员奖

日前,证券基金行业信息技术应用创新联盟2022年度峰会于上海成功举办,在会上,GBASE南大通用作为联盟成员单位,积极相应联盟号召,有力支撑证券信创建设,荣获“2022证券基金行业信息技术应用创新联盟年度优秀成…

第一章 Arm 架构概述(2023新)

第一章 启发式 Arm 架构解读 第二章 CPU微架构 第三章 系统微架构 第四章 总线微架构 第五章 监控微架构 第六章 安全微架构 第七章 虚拟化微架构 第八章 Armv9-A 架构 第九章 Armv8-M 架构 第十章 Armv8-R 架构 第十一章 Cortex-A715 解读 第十二章 Cortex-X3 解读…

图片怎么转成PDF格式?介绍三种转换思路

PDF文件作为一类办公常见格式,很多场合都会使用到。有时我们需要将图片转成PDF格式以方便归纳整理。图片资料怎么转成PDF呢?给大家介绍几个手机和电脑都可以用的方式。希望对你有帮助。方法一、用文件自带的转换功能将图片转成PDF随意打开一个PDF文件后&…

Github每日精选(第94期):免费网页在线情况监控

Upptime Upptime 是开源的正常运行时间监控和状态页面,完全由 GitHub Actions、Issues 和 Pages 提供支持。 Upptime 是 [GitHub Actions] 的一个非常巧妙的用法。您基本上可以根据需要获得免费的可配置正常运行时间监视器。 github 地址在这里。 特点 利用 G…

CTPN的Python实现笔记一

文章目录一、疑难代码讲解1. 文本框左上角标注置信度(1) s str(round(i[-1] * 100, 2)) %(2) cv2.putText() 函数(3) cv2.line()函数2. 文本框进行扩展操作3. 文本框进行NMS操作(1) 非极大值抑制函数def nms(dets, thresh):a. order scores.argsort()[::-1]b. xx1 np.maxim…