介绍
loguru 是一个第三方 log 库,比 python 自带的 logging 简单,不需要配置就可以直接使用,如果没有安装,需要 pip install loguru 进行安装
注意!!!: 此库是线程安全的,但是多进程可能会出问题,可以用队列进行解决,此篇博客暂不涉及。
示例
from loguru import logger
# 这里代表了日志等级,会输出到屏幕
logger.debug("this is a debug log")
logger.info("this is a info log")
logger.warning("this is a warning log")
logger.error("this is a error log")
logger.critical("this is a critical log")
# 这是支持的特殊输出格式
logger.info("this is {}", "a info log")
logger.info("this is {}", 3)
logger.info("this is {:.2f}", 3)
# 把输出写入文件,同时也会输出到屏幕
logger.add("log/file_1.log") # sink
logger.info("this is a info log")
# 把输出写入文件,每个文件达到 10 KB, 就会重新打开一个文件写入,同时也会输出到屏幕
logger.add("log/file_2.log", rotation='10 KB')
for i in range(100):
logger.info("this is a info log")
如果只想输出到文件,可以
logger.remove(0) # 0 是控制台sink的ID ,这样就不会输出到屏幕
add 函数的一些其他设置
logger.add("file_2.log", rotation="12:00") # 每天12点创建新文件
logger.add("file_3.log", rotation="1 week") # 文件时间过长就会创建新文件
logger.add("file_X.log", retention="10 days") # 一段时间后会清空
logger.add("file_Y.log", compression="zip") # 保存zip格式
logger.add("log/file_1.log",level="INFO") # 只会记录等级大于 INFO 的
# 设置不同级别的日志输出到不同文件
logger.add("debug.log", level="DEBUG", rotation="10 MB", filter=lambda record: record["level"].name == "DEBUG")
logger.add("info.log", level="INFO", rotation="10 MB", filter=lambda record: record["level"].name == "INFO")
异常记录:
loguru提供了非常方便的异常定位功能,可以直接使用catch闭包,把抛出异常的位置记录到日志中。
from loguru import logger
logger.add(sink='log.log')
# 注意这里的写法
@logger.catch
def my_function(x, y, z):
return 1 / (x + y + z)
res = my_function(0,0,0)
当你想查找东西,或者学习时,是否遇到,刚打开浏览器,或者打开手机,就被其他东西吸引,而忘记了学习呢?我创建了知识星球,在这里可以免受打扰,欢迎加入,一起学习,交个朋友。下面是新人券,欢迎领取后加入。