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实现命令行通讯录实例教程
Aug 18 Python
Python中二维列表如何获取子区域元素的组成
Jan 19 Python
Python3结合Dlib实现人脸识别和剪切
Jan 24 Python
Python实现的视频播放器功能完整示例
Feb 01 Python
Python requests发送post请求的一些疑点
May 20 Python
python调用Matplotlib绘制分布点并且添加标签
May 31 Python
利用Python读取txt文档的方法讲解
Jun 23 Python
python实现简单的文字识别
Nov 27 Python
Python实现查找数组中任意第k大的数字算法示例
Jan 23 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
Mar 10 Python
Python获取excel内容及相关操作代码实例
Aug 10 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桌面中心(四) 数据显示
2007/03/11 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
js转义字符介绍
2013/11/05 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
分享10个原生JavaScript技巧
2015/04/20 Javascript
JS实现登录页面记住密码和enter键登录方法推荐
2016/05/10 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
把vue-router和express项目部署到服务器的方法
2018/02/21 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
Node.js系列之发起get/post请求(2)
2019/08/30 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
一百多行python代码实现抢票助手
2018/09/25 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
2019/03/13 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
如何利用Python写个坦克大战
2020/11/18 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
高三生物教学反思
2014/01/25 职场文书
2014年英语教学工作总结
2014/12/17 职场文书
辞职信标准格式
2015/02/27 职场文书
javascript对象3个属性特征
2021/11/17 Javascript