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运行报错UnicodeDecodeError的解决方法
Jun 07 Python
python正则表达式的使用
Jun 12 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
May 16 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
Python实现的IP端口扫描工具类示例
Feb 15 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
详解python多线程之间的同步(一)
Apr 03 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
python中np是做什么的
Jul 21 Python
python 实现mysql自动增删分区的方法
Apr 01 Python
Python初识逻辑与if语句及用法大全
Aug 07 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实现递归循环每一个目录
2010/08/08 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
2014/10/17 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
Ucren Virtual Desktop V2.0
2006/11/07 Javascript
Cookie 注入是怎样产生的
2009/04/08 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
Checbox的操作含已选、未选及判断代码
2013/11/07 Javascript
scrollWidth,clientWidth,offsetWidth的区别
2015/01/13 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
JS实现留言板功能
2017/06/17 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
python3.6的venv模块使用详解
2018/08/01 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
Python同时处理多个异常的方法
2020/07/28 Python
python实现登录与注册系统
2020/11/30 Python
德国最大的设计师鞋网上商店:Budapester
2017/12/07 全球购物
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
副科级后备干部考察材料
2014/05/15 职场文书
班级学雷锋活动总结
2014/06/26 职场文书
医学专业大学生求职信
2014/07/12 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
用Python可视化新冠疫情数据
2022/01/18 Python