Python模块之Loguru基础教程
# Author=Hanosn
from loguru import logger
# 打印不同类型的日志
logger.debug("debug message")
logger.info("info level message")
logger.warning("warning level message")
logger.critical("critical level message")
# 日志格式和存入日志级别
logger.add("test.log", format="{time}|{level}|{message}", level="INFO")
# 序列化日志
logger.add("test.log", serialize=True)
# 按照日志大小自动切割日志,还可以按照时间切割:rotation='00:00',rotation='1 week',我们想要设置日志文件最长保留10天,retention='10 days'
logger.add("test.log", rotation="500 MB")
# loguru 还可以配置文件的压缩格式,比如使用 zip 文件格式保存
logger.add('runtime.log', compression='zip')
# 在很多情况下,如果遇到运行错误,而我们在打印输出 log 的时候万一不小心没有配置好 Traceback 的输出,很有可能我们就没法追踪错误所在了。但用了 loguru 之后,我们用它提供的装饰器就可以直接进行 Traceback 的记录,类似这样的配置即可:
@logger.catch
def my_function(x, y, z):
# An error? It's caught anyway!
return 1 / (x + y + z)
# 我们做个测试,我们在调用时三个参数都传入 0,直接引发除以 0 的错误,看看会出现什么情况:
my_function(0, 0, 0)
# 运行完毕之后,可以发现 log 里面就出现了 Traceback 信息,而且给我们输出了当时的变量值,真的是不能再赞了!结果如下:
> File "run.py", line 15, in <module>
my_function(0, 0, 0)
└ <function my_function at 0x1171dd510>
File "/private/var/py/logurutest/demo5.py", line 13, in my_function
return 1 / (x + y + z)
│ │ └ 0
│ └ 0
└ 0
ZeroDivisionError: division by zero