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的urllib2模块处理url和图片的技巧两则
Feb 18 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
使用Python对Excel进行读写操作
Mar 30 Python
详解python 拆包可迭代数据如tuple, list
Dec 29 Python
python实现图像识别功能
Jan 29 Python
python自动发送邮件脚本
Jun 20 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
python tkinter图形界面代码统计工具
Sep 18 Python
Python数据结构dict常用操作代码实例
Mar 12 Python
Python生成器实现简单&quot;生产者消费者&quot;模型代码实例
Mar 27 Python
Python可视化学习之seaborn绘制矩阵图详解
Feb 24 Python
Python内置数据类型中的集合详解
Mar 18 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
终于听上了直流胆调频
2021/03/02 无线电
一个程序下载的管理程序(一)
2006/10/09 PHP
php桌面中心(一) 创建数据库
2007/03/11 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
vue.js实现简单轮播图效果
2017/10/10 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
基于iview-admin实现动态路由的示例代码
2019/10/02 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
python学习手册中的python多态示例代码
2014/01/21 Python
python如何通过twisted实现数据库异步插入
2018/03/20 Python
python的scikit-learn将特征转成one-hot特征的方法
2018/07/10 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
关于sys.stdout和print的区别详解
2019/12/05 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
python 制作本地应用搜索工具
2021/02/27 Python
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
世界排名第一的万圣节服装店:Spirit Halloween
2018/10/16 全球购物
手工社团活动方案
2014/02/17 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
2014年教师节活动总结
2014/08/29 职场文书
2014年党风廉政建设工作总结
2014/11/19 职场文书
微信小程序用户授权最佳实践指南
2021/05/08 Javascript
用Python可视化新冠疫情数据
2022/01/18 Python