loguru的使用

正常使用的logging配置起来比较麻烦,而loguru可以将log的配置结合使用变得简单和方便;

安装

pip3 install loguru

基本使用

from loguru import logger

logger.debug('this is a debug')

输出结果:
loguru的使用
输出格式不要再进行配置,默认的格式为:时间 | 级别 | 模块:输出行号 - 日志信息,而且输出在控制台中的信息是有颜色区分,能更好的的分辨;同时,我们还可以将信息输出到其他地方,例如:

from loguru import logger

logger.add('test.log')
logger.debug('this is a debug')

详细使用

定义:

def add(
        self,
        sink,
        *,
        level=_defaults.LOGURU_LEVEL,
        format=_defaults.LOGURU_FORMAT,
        filter=_defaults.LOGURU_FILTER,
        colorize=_defaults.LOGURU_COLORIZE,
        serialize=_defaults.LOGURU_SERIALIZE,
        backtrace=_defaults.LOGURU_BACKTRACE,
        diagnose=_defaults.LOGURU_DIAGNOSE,
        enqueue=_defaults.LOGURU_ENQUEUE,
        catch=_defaults.LOGURU_CATCH,
        **kwargs
    ):
    pass
  • sink 可以传入一个file对象,例如:sys.stderr 或者 open(‘filename’,‘w’)都可以;
  • sink 可以直接传入一个 str 或者 文件的路径对象,如果识别到是这种类型,它会自动创建对应路径的日志文件并将日志输出进去;
  • sink 可以是一个方法,可以自行定义输出实现;
  • sink 可以是一个 logging 模块的 Handler,比如 FileHandler、StreamHandler 等等,或者 CMRESHandler 照样也是可以的,这样就可以实现自定义 Handler 的配置;
  • sink 还可以是一个自定义的类,具体的实现规范可以参见官方文档

基本参数

logger.add('runtime.log', format="{time} {level} {message}", filter="my_module", level="INFO")

删除sink

from loguru import logger

trace = logger.add('test.log')
logger.debug('this is a debug')
logger.remove(trace)
logger.debug('this is a new debug')

控制台输出:loguru的使用
日志文件输出:
loguru的使用
调用 remove 方法可以删除历史log,但实际上这并不是删除,只不过是将 sink 对象移除之后,在这之前的内容不会再输出到日志中。 这样我们就可以实现日志的刷新重新写入操作。

rotation 配置

logger.add('runtime_{time}.log', rotation="500 MB")

通过上面的配置可以实现每500 MB 储存一个文件,每个log文件过大就会穿件一个 log 文件。
time占位符:可以自动生成时间,生成一个文件名包含时间的 log 文件;

logger.add('runtime_{time}.log', rotation='00:00')

上面这个可以实现每天0点创建一个log文件输出,也可以设置成循环时间,例如:

logger.add('runtime_{time}.log', rotation='1 week')

retention 配置

logger.add('runtime.log', retention='10 days')

通过 retention 可以配置日志的最长保留时间。

compression 配置

logger.add('runtime.log', compression='zip')

通过 compression 可以配置文件的压缩格式。

字符串格式化

loguru 在输出 log 的时候还提供了非常友好的字符串格式化功能,像这样:

logger.info('If you are using Python {}, prefer {feature} of course!', 3.6, feature='f-strings')

Traceback 记录

当遇到错误是,如果在打印出log的时候没有配置 Traceback 的输出,很有可能无法追踪错误。loguru提供了装饰器就可以直接进行 Traceback 的记录。

from loguru import logger

@logger.catch()
def test():
    return 1/0

test()

输出结果:
loguru的使用

文章参考:https://cuiqingcai.com/7776.html

上一篇:华为nova 8i在德国上市发售,并未搭载HarmonyOS系统


下一篇:华为nova系列用户挺近2亿大关,华为做对了什么?