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的web框架中中编写日志列表的教程
Apr 30 Python
对tensorflow 的模型保存和调用实例讲解
Jul 28 Python
python调用百度语音REST API
Aug 30 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
python代码 输入数字使其反向输出的方法
Dec 22 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
django query模块
Apr 20 Python
记录Python脚本的运行日志的方法
Jun 05 Python
Python 根据日志级别打印不同颜色的日志的方法示例
Aug 08 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
Python Charles抓包配置实现流程图解
Sep 29 Python
如何用python批量调整视频声音
Dec 22 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原理的opcodes(操作码)
2010/10/26 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
2013/06/14 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
Laravel框架中队列和工作(Queues、Jobs)操作实例详解
2020/04/06 PHP
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
Bootstrap Table 删除和批量删除
2017/09/22 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
vue.js前后端数据交互之提交数据操作详解
2018/04/24 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
详解在Python中处理异常的教程
2015/05/24 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
python isinstance函数用法详解
2020/02/13 Python
基于Pytorch SSD模型分析
2020/02/18 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
大学活动邀请函
2014/01/28 职场文书
新课培训心得体会
2014/09/03 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
Python如何导出导入所有依赖包详解
2021/06/08 Python