本文介绍了Python根据日志级别打印不同颜色的日志的方法示例,分享给大家,具体如下:
# - *编码:utf - 8 - * 导入日志 进口操作系统 导入的时间 类日志记录器(对象): ”“” 终端打印不同颜色的日志,在pycharm中如果强行规定了日志的颜色,这个方法不会起作用,但是 对于终端,这个方法是可以打印不同颜色的日志的。 ”“” #在这里定义StreamHandler,可以实现单例,所有的记录器()共用一个StreamHandler ch=logging.StreamHandler () def __init__(自我): 自我。记录器=logging.getLogger () 如果不是self.logger.handlers: #如果自我。记录器没有处理程序,就执行以下代码添加处理程序 self.logger.setLevel (logging.DEBUG) 从serviceProgram.utils。FileUtil进口FileUtil rootPath=FileUtil.getProgrameRootPath () 自我。log_path=rootPath +/日志的 如果不是os.path.exists (self.log_path): os.makedirs (self.log_path) #创建一个处理程序,用于写入日志文件 跳频=logging.FileHandler(自我。log_path + '/runlog ' +时间。strftime (“% Y % m % d”, time.localtime ()) +”。日志”,编码=皍tf - 8”) fh.setLevel (logging.INFO) #定义处理程序的输出格式 格式化程序=logging.Formatter (“[% (asctime) s] - [% (levelname) s] %(消息)s ') fh.setFormatter (formatter) #给记录器添加处理程序 self.logger.addHandler(跳频) def调试(自我,消息): self.fontColor(033年\ [0;32 m % s 033 \ [0 m”) self.logger.debug(消息) def信息(自我、消息): self.fontColor(033年\ [0;34 033 % s \ [0 m”) self.logger.info(消息) def警告(自我、消息): self.fontColor(033年\ [0;37 m % s 033 \ [0 m”) self.logger.warning(消息) def错误(自我,消息): self.fontColor(033年\ [0;31 m % s 033 \ [0 m”) self.logger.error(消息) def关键(自我,消息): self.fontColor(033年\ [0;35 m % s 033 \ [0 m”) self.logger.critical(消息) def fontColor(自我、颜色): #不同的日志输出不同的颜色 格式化程序=日志记录。格式化程序(颜色%’[% (asctime) s] - [% (levelname) s] %(消息)s ') self.ch.setFormatter (formatter) self.logger.addHandler (self.ch) if __name__==癬_main__”: 记录器=记录器() logger.info (“12345”) logger.debug (“12345”) logger.warning (“12345”) logger.error (“12345”)
实现过程:
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
转义序列是以ESC开头,即用\ 033来完成(ESC的ASCII码用十进制表示是27日,用八进制表示就是033年)。
书写格式:
开头部分:\[显示方式;前景色;背景色m +结尾部分:033 \ [0 m
注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个,另外由于
表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统
都能识别;但是,建议按照默认的格式规范书写。
对于结尾部分,其实也可以省略,但是为了书写规范,建议033年\[* * *开头,\[0 033结尾。
数值表示的参数含义:
常见开头格式:
-
<李> 033年\ [0 m ,,,,,,,,,,默认字体正常显示,不高亮李>
<李> \ 033 (32;0 m ,,,,,红色字体正常显示李>
<李> 033年\ [1,32;40 m 显示方式:高亮,,,字体前景色:绿色,李背景色:黑色>
<李> 033年\[0,31日;46 m 显示方式:正常,,,字体前景色:红色,李背景色:青色>
实例:
(1) 033年(“\[1,31日,40米您输入的帐号或密码错误! 033 \ [0 m”),,
上方代码的输出格式为:字体高亮,红色前景,黄色背景,,,,,PS:前景色也就是字体的颜色
(2) 033年(“\ [0;31 m % s 033 \ [0 m“%”输出红色字符”)
#上方代码的输出格式为:字体默认,红色前景
LOG_INFO='信息' LOG_ERROR='错误' LOG_WARNING='警告' LOG_NOTIFY=巴ㄖ? LOG_DEBUG=暗魇浴? LOG_USER=坝没А? def info_log(价值): 如果log_level比;3: 033年(“\ [0,37;40 m % s 033 \ [0 m“%值) def error_log(价值): 如果log_level !=0: 033年(“\[0,31日;40 m % s 033 \ [0 m“%值) def warning_log(价值): 如果log_level比;1: 033年(“\ [0,33;40 m % s 033 \ [0 m“%值) def debug_log(价值): 如果log_level比;5: 033年(“\ [0,34;40 m % s 033 \ [0 m“%值) def notify_log(价值): 如果log_level比;2: 033年(“\ [0,36;40 m % s 033 \ [0 m“%值) def user_log(价值): 如果log_level比;4: 033年(“\ [0,32;40 m % s 033 \ [0 m“%值) log_type def ZLOG(值): 切换器={ “信息”:info_log, “错误”:error_log, “警告”:warning_log, “调试”:debug_log, “通知”:notify_log, “用户”:user_log } 返回切换器(log_type)(值) 测试=" hello world " ZLOG (LOG_INFO输出信息日志% s %测试)Python根据日志级别打印不同颜色的日志的方法示例