python自定义封装带颜色的logging模块
admin
2023-08-16 06:25:41
0次

python 自定义封装带颜色的logging模块
【python自定义封装带颜色的logging模块】自己在搭建python接口自动化框架 分享一些内容过程中想自己封装一个logger方法 根据logging进行二次封装 代码如下

import loggingimport osimport timeimport colorlogfrom logging.handlers import RotatingFileHandler# 创建文件目录cur_path = os.path.dirname(os.path.realpath(__file__))# log_path是存放日志的路径log_path = os.path.join(os.path.dirname(cur_path), 'logs')if not os.path.exists(log_path): os.mkdir(log_path)# 如果不存在这个logs文件夹,就自动创建一个# 修改log保存位置timestamp = time.strftime("%Y-%m-%d", time.localtime())logfile_name = '%s.log' % timestamplogfile_path = os.path.join(log_path, logfile_name)# 定义不同日志等级颜色log_colors_config = {'DEBUG': 'bold_cyan','INFO': 'bold_green','WARNING': 'bold_yellow','ERROR': 'bold_red','CRITICAL': 'red',}class Logger(logging.Logger):def __init__(self, name, level='DEBUG', file=None, encoding='utf-8'):super().__init__(name)self.encoding = encodingself.file = fileself.level = level# 针对所需要的日志信息 手动调整颜色formatter = colorlog.ColoredFormatter('%(log_color)s%(levelname)1.1s %(asctime)s %(reset)s| %(message_log_color)s%(levelname)-8s %(reset)s| %(''log_color)s[%(filename)s%(reset)s:%(log_color)s%(module)s%(reset)s:%(log_color)s%(funcName)s%(''reset)s:%(log_color)s%(''lineno)d] %(reset)s- %(white)s%(message)s',reset=True,log_colors=log_colors_config,secondary_log_colors={'message': {'DEBUG': 'blue','INFO': 'blue','WARNING': 'blue','ERROR': 'red','CRITICAL': 'bold_red'}},style='%')# 日志输出格式# 创建一个FileHandler,用于写到本地rotatingFileHandler = logging.handlers.RotatingFileHandler(filename=logfile_path,maxBytes=1024 * 1024 * 50,backupCount=5)rotatingFileHandler.setFormatter(formatter)rotatingFileHandler.setLevel(logging.DEBUG)self.addHandler(rotatingFileHandler)# 创建一个StreamHandler,用于输出到控制台console = colorlog.StreamHandler()console.setLevel(logging.DEBUG)console.setFormatter(formatter)self.addHandler(console)self.setLevel(logging.DEBUG)logger = Logger(name=logfile_path, file=logfile_path)

使用时我们只需要引入封装好的类就行 直观美丽大方~
# 引入封装好的logger模块from common.logger_handler import loggerdef physical_strength(self, abnormal):"""兑换体力异常通用方法"""if self.attrs.__contains__('costType'):attrs_Type = {"costType": abnormal,"count": self.attrs["count"]}response_Type = r().response(self.send_uid, self.code, self.event, attrs_Type)# 使用时直接调用logger.info()就行logger.info(f"physical_strength_{abnormal},response_Type:{response_Type}")assert response_Type["code"] != 0time.sleep(2)attrs_count = {"costType": self.attrs["costType"],"count": abnormal}response_count = r().response(self.send_uid, self.code, self.event, attrs_count)logger.info(f"physical_strength_{abnormal},response_count:{response_count}")assert response_count["code"] != 0time.sleep(2)attrs_all = {"costType": abnormal,"count": abnormal}response_all = r().response(self.send_uid, self.code, self.event, attrs_all)logger.info(f"physical_strength_{abnormal},response_all:{response_all}")assert response_all["code"] != 0time.sleep(2)else:attrs_count = {"count": abnormal}response_count = r().response(self.send_uid, self.code, self.event, attrs_count)logger.info(f"physical_strength_{abnormal},response_count:{response_count}")assert response_count["code"] != 0time.sleep(2)

效果:按照 日期/时间/日志等级/文件名称/类/方法名称/代码行数展示(这里可以自己手动调整formatter参数 如果感觉展示太长的话)
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
python自定义封装带颜色的logging模块
文章图片

避坑:不要用这种方式去调用日志等级方法 会出现日志打印定位路径错误 只能定位在log封装类当前方法下
def debug(self, message):self.__console('debug', message)def info(self, message):self.__console('info', message)def warning(self, message):self.__console('warning', message)def error(self, message):self.__console('error', message)

到此这篇关于python自定义封装带颜色的logging模块的文章就介绍到这了,更多相关python logging模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关内容

热门资讯

大浪淘金APP黑幕揭秘:内盘操...   大浪淘金APP平台最隐蔽的黑幕,在于其完全封闭的内盘交易系统。这个看似与国际市场接轨的交易平台,...
告别固定工资实现财富自由?一品...   普通投资者被广告宣传诱导,注册就送现金,充值返现金券等等这些宣传方式,都是在引流到平台开户,不怕...
哈易购APP打着现货交易幌子搞...   网络上各类白银、铂金等贵金属投资广告铺天盖地,不少平台以"现货交易"为名,暗中却从事着非法期货交...
5元起投!高额收益?中国白银、...   上海华通白银国际交易中心有限公司(以下简称“华通白银国际”)打着“白银、铂金现货订购”的旗号,实...
"九州订购APP、起...   近年来,贵金属投资热度持续攀升,但乱象也随之而来。一些不法分子趁机搭建虚假交易平台,打着"低门槛...
坚锅淘金APP投资者频繁爆仓亏...   坚锅淘金APP对外宣称是贵金属现货交易平台,日常出入金看似畅通无阻,给人一种合规运营的假象。但事...
斗金订购APP“5元订购现货”...   斗金订购APP“5元订购现货”骗局揭秘:充值易、回本难,越陷越深!  许多投资人在未核实平台合规...
贵金属APP乱象曝光:&quo...   当前市场上部分贵金属类APP未取得正规交易资质,涉嫌误导消费者参与白银、铂金等商品的非合规交易!...
华通白银、银宝街APP被指虚假...   警惕现货白银投资陷阱:上海华通白银背后的平台涉嫌非法期货交易  近年来,各类现货白银交易平台以“...
充值送300,月入过万?别被量...   如今,网络上充斥着大量未经批准的贵金属及其他产品订购交易平台。这些平台普遍缺乏合法经营资质,却将...
鑫汇智投APP贵金属非法期货、...   鑫汇智投APP贵金属非法期货、人为控盘,大量投资者遭恶意收割  鑫汇智投APP长期以“低门槛、高...
矅光智策APP非法贵金属交易骗...   不少投资人在矅光智策APP上进行贵金属交易后出现了严重亏损。许多人在下载该平台时,根本不清楚其是...
飞鸽订购APP非法期货交易骗局...   飞鸽订购APP非法期货交易骗局,很多投资者根本没搞懂规则就盲目充值,买涨买跌跟买cai票一样!平...
天龙白银APP被操控的非法期货...   中小投资者在网络平台参与商品现货订购交易,表面看似合规合法,实则暗藏诸多难以察觉的风险。商品现货...
下载送试玩金?千万别碰!带你揭...   当前,许多贵金属APP交易平台正采用欺诈性营销手段。它们通过抖音等短视频平台,以“5元起投”“充...
泡泡淘金APP骗局:打着&qu...   泡泡淘金APP骗局:打着"商品订购"幌子,实则非法期货收割投资者!投资需谨慎,切勿轻信“高额回报...
南商云购APP虚假电子盘背后的...   南商云购是虚假电子盘吗?它是否具备合规的交易资质?这个曾经的"现货电子盘"如今摇身一变,披上了"...
警惕"祥龙订购&qu...   祥龙订购APP、掌上银牛APP等平台背后的运营方——四川禄宏商品现货市场有限公司,仅具备现货交易...
中国白银、华银:虚假宣传、后台...   中国白银APP宣称是上市公司“中国白银集团”与“上海华通白银国际交易中心”旗下的现货交易平台,提...
起底“优品订购”APP非法期货...   “优品订购”APP根本不具备任何合法的交易资质。其背后的运营方仅凭随便注册一家公司、开发一款交易...