logging日志带颜色
在控制台打印时通常使用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日志带颜色相关推荐
- ansi_up---实现后端实时日志(带颜色)前端展示
1.需求: 项目是一个管理系统,当执行安装任务时,需要把后端安装过程中的日志推送到前端,前端在页面上展示实时进度,并且与终端显示的颜色保持一致. 用websocket或者前端设置定时器的方式,定时去获 ...
- 关于Spring-boot 中自带的logging日志配置
越来越觉得csdn的好多文章都随便乱写了,真的很容易被误导...真心希望如果自己不是很确定或者很明白,千万不要瞎写..我就遇到过好几次了... 我要好好总结一下 logging日志的事... 先说一下 ...
- python logging日志分割_python logging日志模块以及多进程日志
本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...
- python logging日志模块以及多进程日志
本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 原出处博客 1. logging日志模块介绍 ...
- Python3进阶--正则表达式、json、logging日志配置、数据库操作、枚举、闭包、匿名函数和高阶函数、time、datetime
第一章 变量.常用循环体.代码结构.代码练习 第二章 列表.元组等数据结构.字符串驻留机制及字符串格式化操作 第三章 函数.面向对象.文件操作.深浅拷贝.模块.异常及捕获 第四章 项目打包.类和对象高 ...
- 控制台打印带颜色的字符
写Java程序的时候,为了看到程序的状态,省事时会写很多的System.out.这本来是为了看程序运行状态,结果满屏幕的输出,看起来很费劲.同样的情况出现在tomcat的日志上,System.out和 ...
- Python使用yaml配置logging日志
前言 在Python环境下,logging是一个很好的用于处理日志的扩展包.平时使用时一般直接import logging后,调用logging.debug("info")方法打印 ...
- logging日志的使用
背景 说到日志,无论是开发写代码还是写UI自动化测试,都离不开日志的记录,它能给我们在定位问题.缺陷时带来很大的方便.通常测试人员使用最多的方法就是用print来打印出日志和报错信息,但是对于一些项目 ...
- 用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台
用python写自动化测试脚本常用功能:结果记录,运行日志,测试配置,带颜色打印在控制台 利用csv库来记录测试结果 利用logging库来记录脚本运行信息 利用ConfigParser库来读取测试配 ...
- day31 logging 日志模块
1 # logging 日志模块 ****** 2 # 记录用户行为或者代码执行过程 3 # print 来回注释比较麻烦的 4 # logging 5 # 我能够"一键"控制 6 ...
最新文章
- 软件开发过程中遇到的问题
- 注释(Annotation)
- WinPcap编程入门实践
- SharePoint Set-SPUser 命令拒绝访问
- 在linux上安装jdk(转载)
- 第十一章:【UCHome二次开发】功能修改
- html css配色方案,链接css不同的配色方案问题
- python dataframe切片_python pandas dataframe 行列选择,切片操作方法
- HP DVD-ROM TS-L663M ATA Devices
- 06Matplotlib数据可视化--6.1绘图基础
- python word 英语音标_(完整word版)英语音标大全,推荐文档
- Kotlin 输出“Hello World”
- 再硬写一个最简单的HTTPSERVER
- 使用Python写一个定时锁屏软件
- 微信历史消息java_微信聊天机器人[过年防信息轰炸、自动回复拜年消息]
- TCP协议如何保证可靠传输
- 2015年秋季腾讯校园招聘开发岗笔试题二
- 【Novel AI】基于Koishi的QQ群配置AI绘图机器人方法
- QClub:Ruby网站架构案例分享──财帮子\u0026FreeWheel
- 写在1024,致程序员致程序员节致自己