Python loguru日志库之高效输出控制台日志和日志记录
1安装loguru
loguru的PyPI地址为:https://pypi.org/project/loguru/
GitHub仓库地址为:https://github.com/Delgan/loguru
我们可以直接使用pip命令对其进行安装
pipinstallloguru
或者下载其源码,使用Python命令进行安装。
|2loguru简单使用
fromloguruimportlogger logger.info("中文loguru") logger.debug("中文loguru") logger.error("中文loguru") logger.warning("中文loguru")
#运行结果
2020-03-0715:51:05.752|INFO |__main__:info:23-中文loguru
2020-03-0715:51:05.753|DEBUG |__main__:debug:26-中文loguru
2020-03-0715:51:05.753|WARNING |__main__:warning:29-中文loguru
2020-03-0715:51:05.753|ERROR |__main__:error:32-中文loguru
可以看到其默认的输出格式是包含【时间、级别、模块名、行号以及日志信息】,不需要手动创建 logger,直接使用即可,另外其输出还是彩色的,看起来会更加友好。
|3loguru保留日志文件
一般情况,我们都需要将日志输出保存到文件中,loguru直接通过add()方法,就可以配置一个日志文件,如下代码所示:
#coding:utf-8 fromloguruimportlogger logger.add("interface_log_{time}.log",rotation="500MB",encoding="utf-8",enqueue=True,compression="zip",retention="10days") logger.info("中文test") logger.debug("中文test") logger.error("中文test") logger.warning("中文test")
#然后就去interface_log_2020-03-07-15:55.log查看日志
#包含知识点
•第一个参数是保存日志信息的文件路径,像我写的后缀多了个{time},就是获取当前时间节点,这样就会自动创建新的日志;这个time应该是库里自带的变量,如果你想自己定义time也可以的哦,具体可以看看下面封装类的实现形式!
•当你需要输出中文日志的时候,请加上encoding="utf-8",避免出现乱码
•enqueue=True代表异步写入,官方的大概意思是:在多进程同时往日志文件写日志的时候使用队列达到异步功效
•rotation可以理解成日志的创建时机,可以有多种写法◦rotation="500MB":当日志文件达到500MB时就会重新生成一个文件
◦rotation="12:00":每天12点就会创建新的文件、
◦rotation="1week":每隔一周创建一个log
•retention配置日志的最长保留时间,官方例子:"1week,3days"、"2months"
•compression配置文件的压缩格式,可以配置常见的格式zip、tar、gz、tar.gz等
|4loguru字符串输出
最重要的!loguru还提供了字符串格式化输出日志的功能,如下面代码
logger.info('IfyouareusingPython{},prefer{feature}ofcourse!',3.6,feature='f-strings') n1="cool" n2=[1,2,3] logger.info(f'IfyouareusingPython{n1},prefer{n2}ofcourse!')
#运行结果
2020-03-0716:19:25.363|INFO |__main__:
:43-IfyouareusingPython3.6,preferf-stringsofcourse!
2020-03-0716:19:25.364|INFO |__main__::46-IfyouareusingPythoncool,prefer[1,2,3]ofcourse!
可以看到,只要你会Python字符串格式化输出,这个简直信手拈来!
|5loguru封装类,可以直接拿去用!
日志输出路径:你的项目路径下的log文件夹下
注意:这个是工具类,需要放在项目路径下的util文件夹之类的,不能直接放项目路径下哈,不然路径会生成错误哦
""" 操作日志记录 """ importtime fromloguruimportlogger frompathlibimportPath project_path=Path.cwd().parent log_path=Path(project_path,"log") t=time.strftime("%Y_%m_%d") classLoggings: __instance=None logger.add(f"{log_path}/interface_log_{t}.log",rotation="500MB",encoding="utf-8",enqueue=True, retention="10days") def__new__(cls,*args,**kwargs): ifnotcls.__instance: cls.__instance=super(Loggings,cls).__new__(cls,*args,**kwargs) returncls.__instance definfo(self,msg): returnlogger.info(msg) defdebug(self,msg): returnlogger.debug(msg) defwarning(self,msg): returnlogger.warning(msg) deferror(self,msg): returnlogger.error(msg) loggings=Loggings() if__name__=='__main__': loggings.info("中文test") loggings.debug("中文test") loggings.warning("中文test") loggings.error("中文test") logger.info('IfyouareusingPython{},prefer{feature}ofcourse!',3.6,feature='f-strings') n1="cool" n2=[1,2,3] logger.info(f'IfyouareusingPython{n1},prefer{n2}ofcourse!')
总结
到此这篇关于Pythonloguru日志库,高效输出控制台日志和日志记录的文章就介绍到这了,更多相关loguru日志库,高效输出控制台日志和日志记录内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。