【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,一经查实,立即删除!

相关文章

C++三体星战小游戏

物理小游戏&#xff0c;懒得 写注释。 游戏代码 #include<bits/stdc.h> #include<bits/stdc.h> #include<windows.h> #include<conio.h> using namespace std; int toint(double a){return ((int)(a*105))/10;} int rand(int a){return rand()%a;} vo…

MySQL数据库,增删改查

数据库增删改查指的是在数据库中对数据进行插入、删除、修改和查询操作。 增加数据&#xff1a;使用INSERT语句向数据库中添加数据&#xff0c;语法如下&#xff1a; INSERT INTO 表名 (列1, 列2, 列3, ...) VALUES (值1, 值2, 值3, ...);例如&#xff1a; INSERT INTO stud…

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

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

Prompt Tuning 和instruct tuning

Prompt Tuning 是啥&#xff1f; prompt的思想是&#xff0c;把下游任务的输入转化为预训练模型的原始任务。 以bert作为举例&#xff0c;假设任务是文本分类。“今天天气很好。”我们想判断一下这句话的情感是正面还是负面 fine-tune的方法是在bert之后接一个head&#xff0…

pytestx容器化执行引擎

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

【跟小嘉学 Rust 编程】十五、智能指针

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…

E - Excellent Views

Problem - E - Codeforces 问题描述&#xff1a;数组H大小都不相同。从i到j是可行的&#xff0c;当且仅当 不存在 k &#xff0c;使 ∣ i − k ∣ ≤ ∣ i − j ∣ , H k > H j 不存在k&#xff0c;使 \\ |i - k| \leq |i - j|, \quad H_k > H_j 不存在k&#xff0c;使…

华为云渲染实践

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

【sql】MongoDB 查询 高级用法

【sql】MongoDB 查询 高级用法 一、基本查询指定字段 db.getCollection(students).find({}, {name: 1, score: 1}) 二、指定字段别名 db.getCollection(students).find({}, {"name":1, "score":1, "grade":"$grade.grade"}) 这里将…

【ag-grid-vue】column

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

集群路由策略

路由策略 1.第一个&#xff1a;当选择该策略时&#xff0c;会选择执行器注册地址的第一台机器执行&#xff0c;如果第一台机器出现故障&#xff0c;则调度任务失败。 2.第二个&#xff1a;当选择该策略时&#xff0c;会选择执行器注册地址的第二台机器执行&#xff0c;如果第二…

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

“智能工厂建设如火如荼&#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…

fckeditor编辑器的两种使用方法

需要的资源包我放我资源里了&#xff0c;不要积分 https://download.csdn.net/download/wybshyy/88245895 首先把FredCK.FCKeditorV2.dll添加到引用 具体方法如下&#xff0c;一个是客户端版本&#xff0c;一个是服务器端版本 客户端版本&#xff1a; <% Page Language…

【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…