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数据类型之间的转换
Jun 08 Python
Python3中使用PyMongo的方法详解
Jul 28 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
Python实现的NN神经网络算法完整示例
Jun 19 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
python 实现视频 图像帧提取
Dec 10 Python
PyCharm取消波浪线、下划线和中划线的实现
Mar 03 Python
Python3.7 读取音频根据文件名生成脚本的代码
Apr 07 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
Pycharm配置lua编译环境过程图解
Nov 28 Python
详解Python为什么不用设计模式
Jun 24 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
PHP制作图形验证码代码分享
2014/10/23 PHP
smarty简单分页的实现方法
2014/10/27 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
PHP中的事务使用实例
2015/05/26 PHP
php计算年龄精准到年月日
2015/11/17 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
关于图片的预加载过程中隐藏未知的
2012/12/19 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
jQuery实现等比例缩放大图片让大图片自适应页面布局
2013/10/16 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
关于axios如何全局注册浅析
2018/01/14 Javascript
Cocos2d实现刮刮卡效果
2018/12/20 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
Python给定一个句子倒序输出单词以及字母的方法
2018/12/20 Python
把pandas转换int型为str型的方法
2019/01/29 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
Python assert语句的简单使用示例
2019/07/28 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
日语专业个人求职信范文
2014/02/02 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
开幕式邀请函
2015/01/31 职场文书
学生犯错保证书
2015/05/09 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏