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 相关文章推荐
利用Psyco提升Python运行速度
Dec 24 Python
用Python的线程来解决生产者消费问题的示例
Apr 02 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
python对json的相关操作实例详解
Jan 04 Python
详解Python 解压缩文件
Apr 09 Python
Linux上使用Python统计每天的键盘输入次数
Apr 17 Python
Python 把序列转换为元组的函数tuple方法
Jun 27 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
Jan 10 Python
pycharm无法导入本地模块的解决方式
Feb 12 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
Django Model层F,Q对象和聚合函数原理解析
Nov 12 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设计模式 Bridge (桥接模式)
2011/06/26 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
Laravel模型间关系设置分表的方法示例
2018/04/21 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
2014/04/22 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
原生javascript实现图片放大镜效果
2017/01/18 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
Python采用Django制作简易的知乎日报API
2016/08/03 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
Python lambda表达式用法实例分析
2018/12/25 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
Python @property原理解析和用法实例
2020/02/11 Python
python 解决tqdm模块不能单行显示的问题
2020/02/19 Python
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
财务与信息服务专业推荐信
2013/11/28 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
2014年学生会个人工作总结
2014/11/07 职场文书
领导欢迎词致辞
2015/01/23 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL