Python loguru日志库之高效输出控制台日志和日志记录


Posted in Python onMarch 07, 2020

1安装loguru

loguru的PyPI地址为:https://pypi.org/project/loguru/

GitHub仓库地址为:https://github.com/Delgan/loguru

我们可以直接使用pip命令对其进行安装

pip install loguru

或者下载其源码,使用Python命令进行安装。

|2loguru简单使用

from loguru import logger

logger.info("中文loguru")
logger.debug("中文loguru")
logger.error("中文loguru")
logger.warning("中文loguru")

# 运行结果

2020-03-07 15:51:05.752 | INFO     | __main__:info:23 - 中文loguru
2020-03-07 15:51:05.753 | DEBUG    | __main__:debug:26 - 中文loguru
2020-03-07 15:51:05.753 | WARNING  | __main__:warning:29 - 中文loguru
2020-03-07 15:51:05.753 | ERROR    | __main__:error:32 - 中文loguru

可以看到其默认的输出格式是包含【时间、级别、模块名、行号以及日志信息】,不需要手动创建  logger ,直接使用即可,另外其输出还是彩色的,看起来会更加友好。

|3loguru保留日志文件

一般情况,我们都需要将日志输出保存到文件中,loguru直接通过 add() 方法,就可以配置一个日志文件,如下代码所示:

# coding:utf-8
from loguru import logger

logger.add("interface_log_{time}.log", rotation="500MB", encoding="utf-8", enqueue=True, compression="zip", retention="10 days")
logger.info("中文test")
logger.debug("中文test")
logger.error("中文test")
logger.warning("中文test")

# 然后就去interface_log_2020-03-07-15:55.log查看日志

Python loguru日志库之高效输出控制台日志和日志记录

# 包含知识点
•第一个参数是保存日志信息的文件路径,像我写的后缀多了个 {time} ,就是获取当前时间节点,这样就会自动创建新的日志;这个time应该是库里自带的变量,如果你想自己定义time也可以的哦,具体可以看看下面封装类的实现形式!
•当你需要输出中文日志的时候,请加上 encoding="utf-8" ,避免出现乱码
•enqueue=True 代表异步写入,官方的大概意思是:在多进程同时往日志文件写日志的时候使用队列达到异步功效
•rotation 可以理解成日志的创建时机,可以有多种写法 ◦rotation="500 MB" :当日志文件达到500MB时就会重新生成一个文件
◦rotation="12:00" :每天12点就会创建新的文件、
◦rotation="1 week" :每隔一周创建一个log

•retention 配置日志的最长保留时间,官方例子: "1 week, 3 days"、"2 months"
•compression 配置文件的压缩格式,可以配置常见的格式 zip、tar、gz、tar.gz 等

|4loguru字符串输出

最重要的!loguru还提供了字符串格式化输出日志的功能,如下面代码

logger.info('If you are using Python {}, prefer {feature} of course!', 3.6, feature='f-strings')
n1 = "cool"
n2 = [1, 2, 3]
logger.info(f'If you are using Python {n1}, prefer {n2} of course!')

# 运行结果

2020-03-07 16:19:25.363 | INFO     | __main__:<module>:43 - If you are using Python 3.6, prefer f-strings of course!
2020-03-07 16:19:25.364 | INFO     | __main__:<module>:46 - If you are using Python cool, prefer [1, 2, 3] of course!

可以看到,只要你会Python字符串格式化输出,这个简直信手拈来!

|5loguru封装类,可以直接拿去用!

日志输出路径:你的项目路径下的log文件夹下

注意:这个是工具类,需要放在项目路径下的util文件夹之类的,不能直接放项目路径下哈,不然路径会生成错误哦

"""
操作日志记录
"""
import time
from loguru import logger
from pathlib import Path

project_path = Path.cwd().parent
log_path = Path(project_path, "log")
t = time.strftime("%Y_%m_%d")

class Loggings:
 __instance = None
 logger.add(f"{log_path}/interface_log_{t}.log", rotation="500MB", encoding="utf-8", enqueue=True,
    retention="10 days")

 def __new__(cls, *args, **kwargs):
  if not cls.__instance:
   cls.__instance = super(Loggings, cls).__new__(cls, *args, **kwargs)

  return cls.__instance

 def info(self, msg):
  return logger.info(msg)

 def debug(self, msg):
  return logger.debug(msg)

 def warning(self, msg):
  return logger.warning(msg)

 def error(self, msg):
  return logger.error(msg)


loggings = Loggings()
if __name__ == '__main__':
 loggings.info("中文test")
 loggings.debug("中文test")
 loggings.warning("中文test")
 loggings.error("中文test")

 logger.info('If you are using Python {}, prefer {feature} of course!', 3.6, feature='f-strings')
 n1 = "cool"
 n2 = [1, 2, 3]
 logger.info(f'If you are using Python {n1}, prefer {n2} of course!')

总结

到此这篇关于Python loguru日志库,高效输出控制台日志和日志记录的文章就介绍到这了,更多相关loguru日志库,高效输出控制台日志和日志记录内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python获取糗百图片代码实例
Dec 18 Python
详解Python中的__init__和__new__
Mar 12 Python
用Python编写脚本使IE实现代理上网的教程
Apr 23 Python
python中尾递归用法实例详解
Apr 28 Python
windows系统下Python环境的搭建(Aptana Studio)
Mar 06 Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
Mar 06 Python
Python ATM功能实现代码实例
Mar 19 Python
使用Keras预训练好的模型进行目标类别预测详解
Jun 27 Python
Python基础之进程详解
May 21 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
Mar 07 #Python
Django接收照片储存文件的实例代码
Mar 07 #Python
Python实现对adb命令封装
Mar 06 #Python
对Python中 \r, \n, \r\n的彻底理解
Mar 06 #Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 #Python
mac在matplotlib中显示中文的操作方法
Mar 06 #Python
python数据类型可变不可变知识点总结
Mar 06 #Python
You might like
第五节--克隆
2006/11/16 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
在PHP 7下安装Swoole与Yar,Yaf的方法教程
2017/06/02 PHP
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
ExtJS实现文件下载的方法实例
2013/11/09 Javascript
javascript实现自动输出文本(打字特效)
2015/08/27 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
前端插件之Bootstrap Dual Listbox使用教程
2019/07/23 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
Python-接口开发入门解析
2019/08/01 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
python爬虫之遍历单个域名
2019/11/20 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
学校三节实施方案
2014/06/09 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
催款函范文
2015/06/24 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
中学后勤工作总结2015
2015/07/22 职场文书
Python可视化学习之seaborn调色盘
2022/02/24 Python
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript