Python根据日志级别打印不同颜色的日志的方法示例

  

本文介绍了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年)。
  

  

书写格式:
  

  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根据日志级别打印不同颜色的日志的方法示例