在控制台打印时通常使用print函数,但是如果我们需要打印一些进度信息,这些信息通常包含统一的格式,使用print函数是不是比较繁琐,另外,当需要将信息写入文件,创建文件和写入信息,文件的管理和频繁的打开关闭是不是比较危险。对于python语言来说,一个logging模块就能解决上述问题。

一、格式设定

直接在需要print的地方使用logging来代替就可以了,logging分为debug,info,warning,error,critical五个等级(等级依次提升),默认情况下只会打印warning以上等级即warning,error,critical的内容,如果需要打印debug以上的日志和修改打印格式,则需要通过basicConfig函数设定logging。

logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',level=logging.DEBUG)

其中format来设定打印格式,具体含义可参考https://blog.csdn.net/orca123456/article/details/84864785

level是设置打印的最小级别,由于debug<info<warning<error<critical,当设置为debug时,所有级别的日志都会打印。

二、保存文件

logging默认只输出到控制台,不会保留到文件系统中。如果需要保存日志,则需要通过getLogger()方法来获取logging对象来设定。参考https://www.cnblogs.com/nancyzhu/p/8551506.html

import logging
from logging import handlersclass Logger(object):level_relations = {'debug':logging.DEBUG,'info':logging.INFO,'warning':logging.WARNING,'error':logging.ERROR,'crit':logging.CRITICAL}#日志级别关系映射def __init__(self,filename,level='info',when='D',backCount=3,fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'):self.logger = logging.getLogger(filename)format_str = logging.Formatter(fmt)#设置日志格式self.logger.setLevel(self.level_relations.get(level))#设置日志级别sh = logging.StreamHandler()#往屏幕上输出sh.setFormatter(format_str) #设置屏幕上显示的格式th = handlers.TimedRotatingFileHandler(filename=filename,when=when,backupCount=backCount,encoding='utf-8')#往文件里写入#指定间隔时间自动生成文件的处理器#实例化TimedRotatingFileHandler#interval是时间间隔,backupCount是备份文件的个数,如果超过这个个数,就会自动删除,when是间隔的时间单位,单位有以下几种:# S 秒# M 分# H 小时、# D 天、# W 每星期(interval==0时代表星期一)# midnight 每天凌晨th.setFormatter(format_str)#设置文件里写入的格式self.logger.addHandler(sh) #把对象加到logger里self.logger.addHandler(th)
if __name__ == '__main__':log = Logger('all.log',level='debug')log.logger.debug('debug')log.logger.info('info')log.logger.warning('警告')log.logger.error('报错')log.logger.critical('严重')Logger('error.log', level='error').logger.error('error')

三、带颜色日志

正常情况下,我们希望带有颜色的日志,通常error和critical用红色表示,warning用橙色表示,info用绿色表示。另外不希望用log.logger这么长,同时也不希望每次在应用之前都重新生成一个对象,希望使用起来和logging一样引进来就能直接调用。下面是具体实现方式。

import logging
from colorma import Fore,style# 获取对象
def get_logger():logger = logging.getLogger()logger.setLevel(logging.DEBUG)if not logger.handlers:ch = logging.StreamHandler(sys.stdout)ch.setLevel(logging.DEBUG)formatter = logging.Formatter(" %(message)s")ch.setFormatter(formatter)logger.addHandler(ch)return logger#通过静态成员方法来调用
class Log:logger = get_logger()@staticmethoddef debug(msg):Log.logger.debug(Fore.WHITE + "[DEBUG]: " + str(msg) + Style.RESET_ALL)@staticmethoddef info(msg):Log.logger.info(Fore.GREEN + "[INFO]: " + str(msg) + Style.RESET_ALL)@staticmethoddef warning(msg):Log.logger.warning("\033[38;5;214m" + "[WARNING]: " + str(msg) + "\033[m")@staticmethoddef error(msg):Log.logger.error(Fore.RED + "[ERROR]: " + str(msg) + Style.RESET_ALL)@staticmethoddef critical(msg):Log.logger.critical(Fore.RED + "[CRITICAL]: " + str(msg) + Style.RESET_ALL)

在使用时只需要import Log, 在具体地方就可以想logging直接使用了(如Log.info("I am green")),并且可以看到日志颜色发生了变化。

但是当需要写入文件的时候,通过封装的方式如何将filename传递进去呢?该内容将后续更新

logging日志带颜色相关推荐

  1. ansi_up---实现后端实时日志(带颜色)前端展示

    1.需求: 项目是一个管理系统,当执行安装任务时,需要把后端安装过程中的日志推送到前端,前端在页面上展示实时进度,并且与终端显示的颜色保持一致. 用websocket或者前端设置定时器的方式,定时去获 ...

  2. 关于Spring-boot 中自带的logging日志配置

    越来越觉得csdn的好多文章都随便乱写了,真的很容易被误导...真心希望如果自己不是很确定或者很明白,千万不要瞎写..我就遇到过好几次了... 我要好好总结一下 logging日志的事... 先说一下 ...

  3. python logging日志分割_python logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...

  4. python logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 原出处博客 1. logging日志模块介绍 ...

  5. Python3进阶--正则表达式、json、logging日志配置、数据库操作、枚举、闭包、匿名函数和高阶函数、time、datetime

    第一章 变量.常用循环体.代码结构.代码练习 第二章 列表.元组等数据结构.字符串驻留机制及字符串格式化操作 第三章 函数.面向对象.文件操作.深浅拷贝.模块.异常及捕获 第四章 项目打包.类和对象高 ...

  6. 控制台打印带颜色的字符

    写Java程序的时候,为了看到程序的状态,省事时会写很多的System.out.这本来是为了看程序运行状态,结果满屏幕的输出,看起来很费劲.同样的情况出现在tomcat的日志上,System.out和 ...

  7. Python使用yaml配置logging日志

    前言 在Python环境下,logging是一个很好的用于处理日志的扩展包.平时使用时一般直接import logging后,调用logging.debug("info")方法打印 ...

  8. logging日志的使用

    背景 说到日志,无论是开发写代码还是写UI自动化测试,都离不开日志的记录,它能给我们在定位问题.缺陷时带来很大的方便.通常测试人员使用最多的方法就是用print来打印出日志和报错信息,但是对于一些项目 ...

  9. 用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台

    用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台 利用csv库来记录测试结果 利用logging库来记录脚本运行信息 利用ConfigParser库来读取测试配 ...

  10. day31 logging 日志模块

    1 # logging 日志模块 ****** 2 # 记录用户行为或者代码执行过程 3 # print 来回注释比较麻烦的 4 # logging 5 # 我能够"一键"控制 6 ...

最新文章

  1. 软件开发过程中遇到的问题
  2. 注释(Annotation)
  3. WinPcap编程入门实践
  4. SharePoint Set-SPUser 命令拒绝访问
  5. 在linux上安装jdk(转载)
  6. 第十一章:【UCHome二次开发】功能修改
  7. html css配色方案,链接css不同的配色方案问题
  8. python dataframe切片_python pandas dataframe 行列选择,切片操作方法
  9. HP DVD-ROM TS-L663M ATA Devices
  10. 06Matplotlib数据可视化--6.1绘图基础
  11. python word 英语音标_(完整word版)英语音标大全,推荐文档
  12. Kotlin 输出“Hello World”
  13. 再硬写一个最简单的HTTPSERVER
  14. 使用Python写一个定时锁屏软件
  15. 微信历史消息java_微信聊天机器人[过年防信息轰炸、自动回复拜年消息]
  16. TCP协议如何保证可靠传输
  17. 2015年秋季腾讯校园招聘开发岗笔试题二
  18. 【Novel AI】基于Koishi的QQ群配置AI绘图机器人方法
  19. QClub:Ruby网站架构案例分享──财帮子\u0026FreeWheel
  20. 写在1024,致程序员致程序员节致自己

热门文章

  1. 删除word中自己插入的单行、双行线
  2. 数据挖掘肿瘤预测_必读|TCGA数据挖掘-肺癌肿瘤免疫浸润分析
  3. 笔试——字符串算法题——寻找最大回文子串
  4. 阿里软件测试工程师推荐|自动化测试——HTTP之URL
  5. STM32F401RCT6最小系统原理图设计
  6. Python修改图片分辨率(附代码) | Python工具
  7. 手机免费logo在线制作的专业教程
  8. google 常用的技术搜索关键词
  9. 动画设计与制作——3D Max场景建模《我的家》V-Ray 4.1
  10. 最新常用会计科目表及详细解释