【python】输出高亮信息的内容

背景

日志是定位问题和数据分析的关键手段之一,尤其是在调试阶段,高效的、具有辨识度的日志可以非常快速准确的进行问题定位。shell中的echo命令自带文本格式化输出的功能,我们先来回顾下基本的语法,然后套用到python中即可。

shell高亮输出

参考链接:http://www.taodudu.cc/news/show-6319976.html?action=onClick

  • 语法:linux系统可以通过man echo来查看

echo命令语法:echo [-ne][字符串] / echo [–help][–version]

支持的可选参数如下:

   -n     :内容输出完毕后不在末尾加换行-e    打开反斜杠ESC转义。若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:\\    \字符\a      发出警告声\b     退格键,也就是删除前一个字符\c    最后不加上换行符号\e     esc\f    换行但光标仍旧停留在原来的位置\n    换行且光标移至行首\r    光标移至行首,但不换行\t    插入tab\0NNN  插入nnn(八进制)所代表的ASCII字符\xHH    插入hh(十六进制)所代表的ASCII字符-E    :取消反斜杠ESC转义 (默认)--help:输出帮助信息--version: 输出版本信息
  • echo输出带颜色的文字示例
echo -e "\033[30m 黑色字\033[0m"
echo -e "\033[31m 红色字\033[0m"
echo -e "\033[32m 绿色字\033[0m"
echo -e "\033[33m 黄色字\033[0m"
echo -e "\033[34m 蓝色字\033[0m"
echo -e "\033[35m 紫色字\033[0m"
echo -e "\033[36m 天蓝色字\033[0m"
echo -e "\033[37m 白色字\033[0m"
#组合设置文本,用分号隔开:白色背景、加粗的绿色字体
echo -e "\033[47;1;32m 绿色字\033[0m"
#也可以使用16进制,esc键对于的ascii码:27(10进制)、0o33(8进制)、0x1b(16进制)
echo -e "\x1b[47;1;32m 绿色字\x1b[0m"

执行结果:
在这里插入图片描述

  • 【说明】
    1、输出带有颜色的文本,必须有"-e"选项,用来启动反斜杠转义的功能;
    2、支持的编码如下所示(这些颜色是ANSI标准颜色):
    编码 颜色/动作
    0   重新设置属性到缺省设置
    1   设置粗体
    2   设置一半亮度(模拟彩色显示器的颜色)
    4   设置下划线(模拟彩色显示器的颜色)
    5   设置闪烁
    7   设置反向图象
    22   设置一般密度
    24   关闭下划线
    25   关闭闪烁
    27   关闭反向图象
    30   设置黑色前景
    31   设置红色前景
    32   设置绿色前景
    33   设置黄色前景
    34   设置蓝色前景
    35   设置紫色前景
    36   设置青色前景
    37   设置白色(灰色)前景
    38   在缺省的前景颜色上设置下划线
    39   在缺省的前景颜色上关闭下划线
    40   设置黑色背景
    41   设置红色背景
    42   设置绿色背景
    43   设置黄色背景
    44   设置蓝色背景
    45   设置紫色背景
    46   设置青色背景
    47   设置白色(灰色)背景
    49   设置缺省黑色背景
    3、"\033"代表的是键ASCII码的8进制;代表着终端转义字符开始,“m"意味着设置属性然后结束非常规字符序列,
    4个例子里真正有效的字符是"47;1;32"和"0”。修改"47;1;32"可以生成不同颜色的组合,数值和编码的前后顺序可以任意指定;

python高亮输出

对应到python代码的话,照猫画虎就大公告成了。

# @Time : 2023/8/27 10:22 
# @Author : xiaoxiao
# @File : log.py
"""
基于logging模块的日志工具类
"""
import sys
import logging
import datetime
import inspect
import osclass Logger:"""log工具类"""def __init__(self):self._log_file = "./log.log"self._logger = logging.getLogger("poc")self._logger.setLevel(logging.DEBUG)# self._logger.handlers = []file_handler = logging.FileHandler(self._log_file)file_handler.setFormatter(logging.Formatter("%(message)s"))self._logger.addHandler(hdlr=file_handler)if "--quiet" in sys.argv or "-q" in sys.argv:returnstream_handler = logging.StreamHandler(sys.stdout)stream_handler.setFormatter(logging.Formatter("%(message)s"))self._logger.addHandler(hdlr=stream_handler)# self._logger.propagate = Falsedef _format_message(self, level, message):"""格式化将要输出日志信息:param level: str, 日志等级, INFO/WARN/ERROR/HIGHLIGHT:param message: str, 日志信息条目:return: str, 格式化的日志信息条目"""frame = inspect.currentframe().f_back.f_backframe_info = inspect.getframeinfo(frame)line_no = frame_info.linenofile_name = frame_info.filenamemodule_name = os.path.splitext(os.path.split(file_name)[1])[0]if module_name and line_no:message = "{time} - [{module}#{line}] - {level} - {message}".format(time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S,%f')[:-3],module=module_name, line=line_no, level=level, message=message)return messagedef info(self, message):self._logger.info(self._format_message("INFO", message))def warn(self, message):self._logger.warning(self._format_message("WARN", message))def error(self, message):self._logger.error(self._format_message("ERROR", message))def highlight_red(self, message):self._logger.info(self._format_message("HIGHLIGHT", "\033[31;1m{}\033[0m".format(message)))def highlight_green(self, message):self._logger.info(self._format_message("HIGHLIGHT", "\033[32;1m{}\033[0m".format(message)))def highlight_yellow(self, message):self._logger.info(self._format_message("HIGHLIGHT", "\033[33;1m{}\033[0m".format(message)))if __name__ == "__main__":logger = Logger()logger.highlight_red("前方高能预警")logger.highlight_green("放宽心,一切正常")logger.highlight_yellow("注意,可能出现异常")

执行结果:
在这里插入图片描述

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

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

相关文章

Docker安装及Docker构建简易版Hadoop生态

一、首先在VM创建一个新的虚拟机将Docker安装好 更新系统:首先打开终端,更新系统包列表。 sudo apt-get update sudo apt-get upgrade下图是更新系统包截图 安装Docker:使用以下命令在Linux上安装Docker。 sudo apt-get install -y docker.i…

pytestx容器化执行引擎

系统架构 前端、后端、pytest均以Docker容器运行服务,单独的容器化执行引擎,项目环境隔离,即用即取,用完即齐,简单,高效。 前端容器:页面交互,请求后端,展示HTML报告 后…

华为云渲染实践

// 编者按:云计算与网络基础设施发展为云端渲染提供了更好的发展机会,华为云随之长期在自研图形渲染引擎、工业领域渲染和AI加速渲染三大方向进行云渲染方面的探索与研究。本次LiveVideoStackCon 2023上海站邀请了来自华为云的陈普,为大家分…

【ag-grid-vue】column

网格中的每一列都使用列定义(ColDef)来定义。列根据在网格选项中指定的列定义的顺序在网格中定位。 列定义 下面的例子展示了一个定义了3列的简单网格: <template><ag-grid-vuestyle"height: 300px; width: 1000px"class"ag-theme-balham":colum…

自动化的驱动力,工控机助您实现智能生产!

“智能工厂建设如火如荼&#xff0c;部分成果已经落地&#xff0c;在大规模资金投入的市场催化下&#xff0c;海尔、海信等制造企业通过智能工厂手段推进生产效率成倍增长的新闻层出不穷。在工业4.0时代&#xff0c;“中国制造2025”战略中&#xff0c;智能工厂构建都是其中不可…

【KMP算法-代码随想录】

目录 1.什么是KMP2.什么是next数组3.什么是前缀表&#xff08;1&#xff09;前后缀含义&#xff08;2&#xff09;最长公共前后缀&#xff08;3&#xff09;前缀表的必要性 4.计算前缀表5.前缀表与next数组&#xff08;1&#xff09;使用next数组来匹配 6.构造next数组&#xf…

1.linux的常用命令

目录 一、Linux入门 二、Linux文件系统目录 三、Linux的vi和vim的使用 四、Linux的关机、重启、注销 四、Linux的用户管理 五、Linux的运行级别 六、Linux的文件目录指令 七、Linux的时间日期指令 八、Linux的压缩和解压类指令 九、Linux的搜索查找指令 ​​​​​​…

windows可视化界面管理服务器上的env文件

需求&#xff1a;在 Windows 环境中通过可视化界面编辑位于 Linux 主机上的 env 文件的情况&#xff0c;我现在环境是windows环境&#xff0c;我的env文件在linux的192.168.20.124上&#xff0c;用户是op&#xff0c;密码是op&#xff0c;文件绝对路径是/home/op/compose/env …

无涯教程-PHP - 性能优化

根据Zend小组的说明,以下插图显示了PHP 7与PHP 5.6和基于流行的基于PHP的应用程序上的HHVM 3.7。 Magento 1.9 与执行Magento事务的PHP 5.6相比&#xff0c;PHP 7的运行速度证明是其两倍。 Drupal 7 在执行Drupal事务时&#xff0c;与PHP 5.6相比&#xff0c;PHP 7的运行速度…

SQL 大小敏感问题

在SQL中&#xff0c;关键字和函数名 是不区分 大小写的 比如&#xff08;select、where、order by 、group by update 等关键字&#xff09;&#xff0c;以及函数(ABS、MOD、round、min等) window系统默认是大小写不敏感 &#xff08;ZEN文件和zen 文件 不能同时存在&#xff…

【vue3+ts项目】配置husky+配置commitlint

上一篇文章中配置了eslint校验代码工具 【vue3ts项目】配置eslint校验代码工具&#xff0c;eslintprettierstylelint 1、配置husky 每次手动执行命令才能格式化代码&#xff0c;如果有人没有格式化就提交到远程仓库&#xff0c;这个规范就起不到作用了&#xff0c;所有需要强…

Arcgis colorRmap

arcgis中colorRmap对应的名称&#xff1a; 信息来源&#xff1a;https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm 在arcpy中使用方法&#xff1a; import arcpy cr arcpy.mp.ColorRamp("Yellow to Red")python中 ma…

wqs二分

前提&#xff1a;答案满足凸性 题目类似为 n n n 个里面选 m m m 个求某种代价&#xff0c;暴力二维dp复杂度大&#xff0c;但容易计算不限制选的次数。 由于不限制选的次数&#xff0c;所以给选一个东西给一个代价 v v v&#xff0c;然后判断最后选了多少个&#xff0c;再…

Docker(md版)

Docker 一、Docker二、更换apt源三、docker搭建四、停启管理五、配置加速器5.1、方法一5.2、方法二 六、使用docker运行漏洞靶场1、拉取tomcat8镜像2、拉取成功3、开启服务4、查看kali的IP地址5、访问靶场6、关闭漏洞靶场 七、vulapps靶场搭建 一、Docker Docker是一个开源的应…

2023国赛数学建模思路 - 案例:随机森林

文章目录 1 什么是随机森林&#xff1f;2 随机深林构造流程3 随机森林的优缺点3.1 优点3.2 缺点 4 随机深林算法实现 建模资料 ## 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是随机森林&#xff…

python网络编程

文章目录 socket套接字客户端/服务模型linux文件描述符fdLinux网络IO模型详解网络服务器Apache VS Nginx生产者消费者-生成器版客户端/服务端-多线程版IO多路复用TCPServer模型异步IO多路复用TCPServer模型 socket套接字 套接字&#xff08;socket&#xff09;是抽象概念,表示T…

c++ qt--事件(第六部分)

c qt–事件&#xff08;第六部分&#xff09; 一.编辑伙伴&#xff0c;编辑顺序&#xff08;按TAB进行切换&#xff09; 1.编辑伙伴 此功能在设计界面如下的位置 1.设置伙伴关系 鼠标左键长按一个Label组件然后把鼠标移到另一个组件上 2.伙伴关系的作用 伙伴关系的作用就是…

HoudiniVex笔记_P26_RecursionBasics递归基础

原视频&#xff1a;https://www.youtube.com/playlist?listPLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI Bili&#xff1a;Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili Houdini版本&#xff1a;19.5 1、概述 递归是一种直接或者间接地调用自身的算法&a…

猜数游戏-Rust版

cargo new guessing_game 创建项目 输入任意内容&#xff0c;并打印出来 main.rs: use std::io; // 像String这些类型都在预先导入的prelude里&#xff0c;如果要使用的不在prelude里&#xff0c;则需要显式导入fn main() { println!("猜数"); println!("…

37、springboot 为 spring mvc 提供的自动配置及对自动配置的一些自定义定制(大体思路)

springboot 为 spring mvc 提供的自动配置及对自动配置的一些自定义定制&#xff08;大体思路&#xff09; ★ Spring Boot主流支持两个MVC框架&#xff1a; Spring MVC&#xff08;基于Servlet&#xff09; Spring WebFlux&#xff08;基于Reactive&#xff0c;属于响应式AP…