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中AND、OR的一个使用小技巧
Feb 18 Python
python基于multiprocessing的多进程创建方法
Jun 04 Python
python+selenium+autoit实现文件上传功能
Aug 23 Python
Python基于opencv的图像压缩算法实例分析
May 03 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
Jun 13 Python
梅尔频率倒谱系数(mfcc)及Python实现
Jun 18 Python
Python中print函数简单使用总结
Aug 05 Python
python爬虫 猫眼电影和电影天堂数据csv和mysql存储过程解析
Sep 05 Python
python3.7通过thrift操作hbase的示例代码
Jan 14 Python
Python-openCV读RGB通道图实例
Jan 17 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
python基于机器学习预测股票交易信号
May 25 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
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
JavaScript之cookie技术详解
2016/11/18 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
jquery对象与DOM对象转化
2017/02/08 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
vue axios 二次封装的示例代码
2017/12/08 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
[01:51]DAC趣味视频-如何成为职业选手.mp4
2017/04/02 DOTA
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
使用python实现rsa算法代码
2016/02/17 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
python中多个装饰器的执行顺序详解
2018/10/08 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
入党转预备思想汇报
2014/01/07 职场文书
小区推广策划方案
2014/06/06 职场文书
运动会的口号
2014/06/09 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
销售活动策划方案
2014/08/26 职场文书
2014年酒店前台工作总结
2014/11/14 职场文书
建议书格式
2015/02/04 职场文书
西柏坡导游词
2015/02/05 职场文书
企业战略合作意向书
2015/05/08 职场文书