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