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类定义的讲解
Nov 01 Python
Python实现的数据结构与算法之基本搜索详解
Apr 22 Python
深入浅出分析Python装饰器用法
Jul 28 Python
Python对List中的元素排序的方法
Apr 01 Python
详解Python3.6安装psutil模块和功能简介
May 30 Python
python 判断字符串中是否含有汉字或非汉字的实例
Jul 15 Python
python中怎么表示空值
Jun 19 Python
python 如何设置守护进程
Oct 29 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
Python try except else使用详解
Jan 12 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 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
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
php版阿里云OSS图片上传类详解
2016/12/01 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
JS 图片缩放效果代码
2010/06/09 Javascript
js 上传图片预览问题
2010/12/06 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
jQuery aminate方法定位到页面具体位置
2013/12/26 Javascript
JQuery基础语法小结
2015/02/27 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
原生JS+Canvas实现五子棋游戏
2020/05/28 Javascript
ES6基础之展开语法(Spread syntax)
2019/02/21 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
python私有属性和方法实例分析
2015/01/15 Python
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python内建模块struct实例详解
2018/02/02 Python
Python基于pycrypto实现的AES加密和解密算法示例
2018/04/10 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
Python协程 yield与协程greenlet简单用法示例
2019/11/22 Python
python字符串的index和find的区别详解
2020/06/20 Python
简述数据库的设计过程
2015/06/22 面试题
行政内勤岗位职责
2014/04/07 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
会议邀请函
2015/01/30 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
Java Socket实现多人聊天系统
2021/07/15 Java/Android
全网非常详细的pytest配置文件
2022/07/15 Python