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 判断一个进程是否存在
Apr 09 Python
haskell实现多线程服务器实例代码
Nov 26 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
使用python对多个txt文件中的数据进行筛选的方法
Jul 10 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
Python实现拼音转换
Jun 07 Python
聊聊Python String型列表求最值的问题
Jan 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
php adodb操作mysql数据库
2009/03/19 PHP
深入分析php之面向对象
2013/05/15 PHP
解析php如何将日志写进syslog
2013/06/28 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
php命令行用法入门实例教程
2014/10/27 PHP
php基于双向循环队列实现历史记录的前进后退等功能
2015/08/08 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
JavaScript 高效运行代码分析
2010/03/18 Javascript
基于JQuery的6个Tab选项卡插件
2010/09/03 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
javascript表单验证大全
2015/08/12 Javascript
javascript中 try catch用法
2015/08/16 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
微信小程序获取用户信息并保存登录状态详解
2019/05/10 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
学校后勤岗位职责
2014/02/19 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
专项资金申请报告
2015/05/15 职场文书
学历证明样本
2015/06/16 职场文书
《秋天的怀念》教学反思
2016/02/17 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书