在部署一些定时运行或者长期运行的任务时,为了留存一些导致程序出现异常或错误的信息,通常会才用日志的方式来进行记录这些信息。
在 Python
中用到日志记录,那就不可避免地会用到内置的 logging
标准库 。虽然logging
库采用的是模块化设计,你可以设置不同的 handler
来进行组合,但是在配置上通常较为繁琐;而且如果不是特别处理,在一些多线程或多进程的场景下使用 logging
还会导致日志记录会出现错乱或是丢失的情况。
但有这么一个库,它不仅能够减少繁琐的配置过程还能实现和logging
类似的功能,同时还能保证日志记录的线程进程安全,又能够和logging
相兼容,并进一步追踪异常也能进行代码回溯。这个库叫loguru
——一个专为像我这样懒人而生日志记录库。
loguru
库的使用可以说是十分简单,我们直接可以通过导入它本身封装好的logger
类就可以直接进行调用。
#!pip install loguru
from loguru import logger
logger
本身就是一个已经实例化好的对象,如果没有特殊的配置需求,那么自身就已经带有通用的配置参数;同时它的用法和 logging
库输出日志时的用法一致
In [1]: from loguru import logger
...:
...: logger.debug("debug message" )
...: logger.info("info level message")
...: logger.warning("warning level message")
...: logger.critical("critical level message")
2020-10-07 14:23:09.637 | DEBUG | __main__:<module>:3 - debug message
2020-10-07 14:23:09.637 | INFO | __main__:<module>:4 - info level message
2020-10-07 14:23:09.638 | WARNING | __main__:<module>:5 - warning level message
2020-10-07 14:23:09.638 | CRITICAL | __main__:<module>:6 - critical level message
当你在IDE
或终端里运行时会发现,loguru
还为输出的日志信息带上了不同的颜色样式(schema
),使得结果更加美观。
当然,loguru
也像logging
一样为我们提供了其他可配置的部分,但相比于 logging
每次要导入特定的handler
再设定一些formatter
来说是更为「傻瓜化」了。
配置
使用基本的add()
方法就可以对logger
进行简单的配置,这些配置有点类似于使用 logging
时的 handler
。这里简单提及一下比较常用的几个。
写入日志
在不指定任何参数时,logger
默认采用 sys.stderr
标准错误输出将日志输出到控制台(console
)中;但在linux
服务器上我们有时不仅让其输出,还要以文件的形式进行留存,那么只需要在第一个参数中传入一个你想要留存文件的路径字符串即可。就像这样:
from loguru import logger
import os
logger.add(os.path.expanduser("~/Desktop/testlog.log"))
logger.info