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 Requests 基础入门
Apr 07 Python
利用Python如何生成随机密码
Apr 20 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
python执行系统命令后获取返回值的几种方式集合
May 12 Python
python用for循环求和的方法总结
Jul 08 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
解决Python数据可视化中文部分显示方块问题
May 16 Python
python源码剖析之PyObject详解
May 18 Python
Python如何导出导入所有依赖包详解
Jun 08 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
2018/10/15 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
2013/04/02 Javascript
JS中prototype关键字的功能介绍及使用示例
2013/07/21 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
取得元素的左和上偏移量的方法
2014/09/17 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
webpack配置文件和常用配置项介绍
2017/04/28 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
jQuery实现简单日历效果
2020/07/05 jQuery
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
Python判断Abundant Number的方法
2015/06/15 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
对Python实现累加函数的方法详解
2019/01/23 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
python实现远程控制电脑
2019/05/23 Python
Django Rest framework权限的详细用法
2019/07/25 Python
python面向对象 反射原理解析
2019/08/12 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
深入浅析Python代码规范性检测
2020/07/31 Python
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
美国鲍勃商店:Bob’s Stores
2018/07/22 全球购物
两道JAVA笔试题
2016/09/14 面试题
制衣厂各岗位职责
2013/12/02 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
创建文明学校实施方案
2014/03/11 职场文书
小学一年级评语大全
2014/04/22 职场文书
采购员工作总结范文
2015/08/12 职场文书
小学数学教师研修感悟
2015/11/18 职场文书