python在终端输出不同颜色的打印,自定义日志和自定义log输出级别

2023-11-17

实现过程:

      终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。

      转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。

 

书写格式:
     开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m

     注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个;另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别;但是,建议按照默认的格式规范书写。

     对于结尾部分,其实也可以省略,但是为了书写规范,建议\033[***开头,\033[0m结尾。

 

数值表示的参数含义:


常见开头格式
\033[0m            默认字体正常显示,不高亮
\033[32;0m       红色字体正常显示
\033[1;32;40m  显示方式: 高亮    字体前景色:绿色  背景色:黑色
\033[0;31;46m  显示方式: 正常    字体前景色:红色  背景色:青色

 

实例:

  (1)print("\033[1;31;40m您输入的帐号或密码错误!\033[0m")  

  上方代码的输出格式为:字体高亮,红色前景,黄色背景      PS:前景色也就是字体的颜色
  

  (2)print("\033[0;31m%s\033[0m" % "输出红色字符")

  #上方代码的输出格式为:字体默认,红色前景

  

LOG_INFO='INFO'
LOG_ERROR='ERROR'
LOG_WARNING='WARNING'
LOG_NOTIFY='NOTIFY'
LOG_DEBUG='DEBUG'
LOG_USER='USER'

import time

#日志水平,0不输出,1输出ERROR,2输出WARNING、ERROR,3输出NOTIFY、WARNING、ERROR
#4输出INFO、NOTIFY、WARNING、ERROR,5输出除DEBUG外的其他,6输出所有包括DEBUG
log_level=5

def get_time_stamp():
    ct = time.time()
    local_time = time.localtime(ct)
    data_head = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
    data_secs = (ct - long(ct)) * 1000
    time_stamp = "%s.%03d" % (data_head, data_secs)
    return time_stamp

def info_log(value):
    if log_level > 3:
        print("\033[37m[%s][info]%s\033[0m"%(get_time_stamp(),value))

def error_log(value):
    if log_level != 0:
        print("\033[31m[%s][error]%s\033[0m"%(get_time_stamp(),value))

def warning_log(value):
    if log_level > 1:
        print("\033[33m[%s][warning]%s\033[0m"%(get_time_stamp(),value))

def debug_log(value):
    if log_level > 5:
        print("\033[34m[%s][debug]%s\033[0m"%(get_time_stamp(),value))

def notify_log(value):
    if log_level > 2:
        print("\033[36m[%s][notify]%s\033[0m"%(get_time_stamp(),value))

def user_log(value):
    if log_level > 4:
        print("\033[32m[%s][user]%s\033[0m"%(get_time_stamp(),value))

def ZLOG(log_type,value):
    switcher={
        'INFO':info_log,
        'ERROR':error_log,
        'WARNING':warning_log,
        'DEBUG':debug_log,
        'NOTIFY':notify_log,
        'USER':user_log
    }
    return switcher[log_type](value)

test = "logtest"
ZLOG(LOG_INFO,"hello" + test)
ZLOG(LOG_ERROR,"hello %s"%test)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python在终端输出不同颜色的打印,自定义日志和自定义log输出级别 的相关文章

随机推荐

  • 最新openCV-Python安装教程(opencv-python版本4.4.0, Python版本: 3.9)

    本文是最新的opencv python 安装教程 以前的一键安装 pip install opencv python 在新版本上并不能使用 本文会按照4步详细的介绍 opencv python 版本 4 4 0 Python 版本 3 9
  • 数据湖架构之Hudi编译篇

    前言 说起编译hudi 从第一遍过之后 再回过头来看 发现就是第一遍不熟悉 出现的一切问题可以总结为maven仓库没配置好 一开始我只是配置了阿里云仓库 但是后面不断报错 然后百度谷歌找原因 再调整配置 再编译 最后就成功了 所以整体来说编
  • jmeter-定时器

    目录 1 固定定时器 2 统一随机定时器 3 同步定时器 4 固定吞吐量定时器 一 定时器的使用目的 使用 定时器 的主要目的是模拟用户的 思考时间 在负载测试领域 思考时间 代表模拟真实用户行为 就是人们在与web应用程序的交互等待时间
  • QT 信号槽connect中解决自定义数据类型或数组作为函数参数的问题——QT qRegisterMetaType 注册MetaType——关键:注册自定义数据类型或QMap等容器类...

    一般情况下信号槽直接连接方式不会出现问题 但是如果信号与槽在不同线程或Qt QueuedConnection方式连接 可能会在连接期间报以下类似问题 如 QObject connect Cannot queue arguments of t
  • 微信小程序 嵌入页面的滚动选择器 picker-view picker-view-column 组件

    完整微信小程序 Java后端 技术贴目录清单页面 必看 嵌入页面的滚动选择器 其中只可放置 picker view column组件 其它节点不会显示 属性 类型 默认值 必填 说明 最低版本 value Array 否 数组中的数字依次表
  • 软工期末( 测试方法)

    白盒测试 白盒测试又称结构测试 透明盒测试 逻辑驱动测试或基于代码的测试 白盒测试是一种测试用例设计方法 盒子指的是被测试的软件 白盒指的是盒子是可视的 即清楚盒子内部的东西以及里面是如何运作的 白盒 法全面了解程序内部逻辑结构 对所有逻辑
  • C#常用的加密算法:MD5、Base64、SHA1、SHA256、HmacSHA256、DES、AES、RSA

    简介 本文主vb net教程要讲c 教程解一下C 常用的python基础教程那些加密java基础教程算法 包括MD5 Base64 SHA1 SHA256 HmacSHA256 DES AES RSA加密sql教程等 有需要的朋友可以参考下
  • Java写入txt文件内容

    Java写入数据进txt文件 需求 多条数据追加进文件 且需要处理中文编码问题 以下代码只能处理向文件添加数据的功能 但是会覆盖掉之前的数据 import java io File import java io FileOutputStre
  • 7-3 一维世界的纷争 (C++) 简单详细

    代码简单 难的点在于读懂题目 帝国A和帝国B统治着一维世界 帝国A的首都位于X 帝国B的首都位于Y 100 X
  • Linux中系统进程的详细管理

    一 什么是进程 进程就是系统未完成并且正在进行的工作 二 查看进程 1 图形方式查看 gnome system monitor 进程状态 R Running 该程序正在运行 S Sleep 改程序目前正在睡眠状态 idle 但可以被唤醒 s
  • VRTK4 入门指南

    VRTK4 说明文档 VRTK Farm Yard 示例 Virtual Reality Toolkit 要求使用 Unity 2020 3 24f1 Beta 免责声明 简介 入门 下载项目 在 Unity 中打开下载的项目 使用 Uni
  • Disruptor(一)Disruptor概念和RingBuffer数据结构

    Disruptor是LMAX公司开源的一个高效的内存无锁队列 谈到并发程序设计 有几个概念是避免不了的 1 锁 锁是用来做并发最简单的方式 当然其代价也是最高的 内核态的锁的时候需要操作系统进行一次上下文切换 等待锁的线程会被挂起直至锁释放
  • Unity 3D控制角色运动的方法

    一 transform Translate 方法 1 Input GetKey KeyCode 按键 if Input GetKey KeyCode W transform Translate Vector3 forward Time de
  • Ubuntu 18.04 16.04 设置输入法切换方法 中文输入法

    新装的unbunu 18 04 16 04 也可以 默认应该有中文输入法 但是应该不太好用 我们安装一个搜狗输入法 下面的shell代码实现了更新软件 检查语言支持 然后下载搜狗输入法 并且安装 然后把fcitx设置为默认输入 然后重启系统
  • 谈一谈关于NLP的落地场景和商业价值

    欢迎大家关注微信公众号 baihuaML 白话机器学习 在这里 我们一起分享AI的故事 您可以在后台留言 关于机器学习 深度学习的问题 我们会选择其中的优质问题进行回答 本期的问题 你好 请问下nlp在现在的市场主要应用在哪些方面 什么是N
  • java调用onnx模型_微软宣布开源ONNX.js,可在浏览器上运行ONNX模型

    ONNX js是一个Java库 用于在浏览器和Node js上运行ONNX模型 ONNX js采用了WebAssembly和WebGL技术 为CPU和GPU提供优化的ONNX模型推理runtime 为何选择ONNX模型 在开放式神经网络交换
  • U盘分配单元大小建议设置多少?

    在对U盘进行格式化的时候 需要先进行单元分配 合理单元分配不仅可以提高U盘的读写速度还不会浪费储存空间 下面就来看看U盘分配单元大小设多少最佳的教程 具体解析如下 1 首先来说U盘的默认格式化的方式都是FAT32的 FAT32不支持大于4G
  • fatal error: Python.h: No such file or directory解决办法

    sudo apt get install scikit image 在安装scikit image时出现如下错误 Installing collected packages subprocess32 python dateutil back
  • Ubuntu连接不了网络的解决方法

    问题描述 突然发现Ubuntu连不上网络 右上角也没有网络图标 解决方案1 解决步骤 步骤一 sudo vim etc NetworkManager NetworkManager conf 1 将其中的managed false 改为 ma
  • python在终端输出不同颜色的打印,自定义日志和自定义log输出级别

    实现过程 终端的字符颜色是用转义序列控制的 是文本模式下的系统显示功能 和具体的语言无关 转义序列是以ESC开头 即用 033来完成 ESC的ASCII码用十进制表示是27 用八进制表示就是033 书写格式 开头部分 033 显示方式 前景