只做网站,网站建设工期,wordpress主题下载zip,婚恋网站开发背景文献背景
日志是定位问题和数据分析的关键手段之一#xff0c;尤其是在调试阶段#xff0c;高效的、具有辨识度的日志可以非常快速准确的进行问题定位。shell中的echo命令自带文本格式化输出的功能#xff0c;我们先来回顾下基本的语法#xff0c;然后套用到python中即可。
s…背景
日志是定位问题和数据分析的关键手段之一尤其是在调试阶段高效的、具有辨识度的日志可以非常快速准确的进行问题定位。shell中的echo命令自带文本格式化输出的功能我们先来回顾下基本的语法然后套用到python中即可。
shell高亮输出
参考链接http://www.taodudu.cc/news/show-6319976.html?actiononClick
语法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码2710进制、0o338进制、0x1b16进制
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.logself._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(hdlrfile_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(hdlrstream_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(timedatetime.datetime.now().strftime(%Y-%m-%d %H:%M:%S,%f)[:-3],modulemodule_name, lineline_no, levellevel, messagemessage)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(注意可能出现异常)
执行结果