Python - loguru日志库,高效输出控制台日志和日志记录

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

Python - 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查看日志

包含知识点
第一个参数是保存日志信息的文件路径,像我写的后缀多了个 {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__::43 - If you are using Python 3.6, prefer f-strings of course!
2020-03-07 16:19:25.364 | INFO | __main__::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!')

EOF

作  者:小菠萝测试笔记
出  处:https://www.cnblogs.com/poloyy/p/12435089.html

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
8天前
|
Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
|
7天前
|
SQL 关系型数据库 MySQL
MySQL操作利器——mysql-connector-python库详解
MySQL操作利器——mysql-connector-python库详解
36 0
|
7天前
|
机器学习/深度学习 数据处理 Python
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
从NumPy到Pandas:轻松转换Python数值库与数据处理利器
21 0
|
3天前
|
调度 开发者 网络架构
探索Python中的异步编程:深入理解asyncio库
【9月更文挑战第32天】在现代软件开发中,异步编程已成为提升性能和响应性的关键策略之一。本文将深入探讨Python的asyncio库,一个强大的异步I/O框架,它允许开发者编写单线程并发代码,同时处理多个任务而无需复杂的多线程或多进程编程。通过本文,你将学习到如何利用asyncio来构建高效、可扩展的应用程序,并了解其背后的原理和设计哲学。
7 2
|
8天前
|
Linux 开发者 iOS开发
Python中使用Colorama库输出彩色文本
Python中使用Colorama库输出彩色文本
|
5天前
|
数据挖掘 Python
【Python】应用:pyproj地理计算库应用
这篇博客介绍了 `pyproj` 地理计算库的应用,涵盖地理坐标系统转换与地图投影。通过示例代码展示了如何进行经纬度与UTM坐标的互转,并利用 `pyproj.Geod` 计算两点间的距离及方位角,助力地理数据分析。 安装 `pyproj`:`pip install pyproj`。更多内容欢迎关注本博客,一起学习进步! Pancake 🍰 不迷路。😉*★,°*:.☆( ̄▽ ̄)/$:*.°★* 😏
11 1
|
8天前
|
Linux Android开发 iOS开发
开源的Python库,用于开发多点触控应用程序
Kivy是一款开源Python库,专为开发多点触控应用设计,支持Android、iOS、Linux、OS X和Windows等平台。本文将指导你使用Kivy创建“Hello World”应用并打包成Android APK。首先通过`pip install kivy`安装Kivy,然后创建并运行一个简单的Python脚本。接着,安装Buildozer并通过`buildozer init`生成配置文件,修改相关设置后,运行`buildozer -v android debug`命令打包应用。完成构建后,你将在`./bin/`目录下找到类似`your-app-debug.apk`的文件。
14 2
|
8天前
|
API Python
使用Python requests库下载文件并设置超时重试机制
使用Python的 `requests`库下载文件时,设置超时参数和实现超时重试机制是确保下载稳定性的有效方法。通过这种方式,可以在面对网络波动或服务器响应延迟的情况下,提高下载任务的成功率。
28 1
|
6天前
|
数据挖掘 API 数据处理
Python 数据分析及预处理常用库
Python自身数据分析功能有限,需借助第三方库增强。常用库包括NumPy、pandas、Matplotlib等。NumPy由Numeric发展而来,提供了多维数组对象及各种API,支持高效的数据处理,如数学、逻辑运算等,常作为其他高级库如pandas和Matplotlib的依赖库。其内置函数处理速度极快,建议优先使用以提升程序效率。
7 0
|
6天前
|
存储 运维 监控
超级好用的C++实用库之日志类
超级好用的C++实用库之日志类
13 0
下一篇
无影云桌面