Python中有一个内置的日志标准库——logging,但开发中涉及到日志记录时,基本都不会采用它,因为其在配置上较为繁琐。同时在多线程或多进程的场景下,若不进行特殊处理还会导致日志记录异常。其替代品就是一个优雅、简洁的日志记录第三方库——loguru,导入封装的logger类,即可直接进行调用和日志处理,非常方便实用。本文地址:http://www.04007.cn/article/1192.html,未经许可,不得转载.
# 安装logoru模块 pip3 install loguru # 引入和调用logoru from loguru import logger logger.debug('This is debug information') logger.info('This is info information') logger.warning('This is warn information') logger.error('This is error information')logoru自带有8种级别的日志,success/debug/trace/debug/info/warning/error/critical。也是程序开发中的常用日志级别分类。且不同的级别日志在控制台上的显示上还有颜色区分,非常一目了然。如果觉得颜色碍事,可以使用在引入 logger之后使用 logger.remove() 去掉其默认颜色特性。logger 默认采用 sys.stderr标准错误输出将日志输出到控制台中,假如想要将日志同时输出到其他的位置,一般都是日志文件,这时我们只需要调用一下方法指定一下即可。在调用loguru定义日志记录的时候常用的参数配置解析如下:本文地址:http://www.04007.cn/article/1192.html,未经许可,不得转载.
#logoru常用参数配置解析
sink:可以传入一个 file 对象(file-like object),或一个 str 字符串或者 pathlib.Path 对象,或一个方法(coroutine function),或 logging 模块的 Handler(logging.Handler)。
format (str or callable, optional) :格式化模块,在发送到接收器之前,使用模板对记录的消息进行格式化。
level (int or str, optional) :应将已记录消息发送到接收器的最低严重级别。
encoding (str, optional) :文件编码与内置的' open() '函数相同。如果' None ',它默认为'locale.getpreferredencoding()
enqueue (bool, optional) :要记录的消息在到达接收器之前是否应该首先通过多进程安全队列。当通过多个进程将日志记录到文件中时,这是非常有用的。这还具有使日志调用非阻塞的优点。
rotation:分隔日志文件,何时关闭当前日志文件并启动一个新文件的条件,;例如,"500 MB"、"0.5 GB"、"1 month 2 weeks"、"10h"、"monthly"、"18:00"、"sunday"、"monday at 18:00"、"06:15"本文地址:http://www.04007.cn/article/1192.html,未经许可,不得转载.
#其它不常用选项列表
retention (str, int, datetime.timedelta or callable, optional) ,可配置旧日志的最长保留时间,例如,"1 week, 3 days"、"2 months"
filter (callable, str or dict, optional) :用于决定每个记录的消息是否应该发送到接收器。
colorize (bool, optional) – 是否应将格式化消息中包含的颜色标记转换为用于终端着色的Ansi代码,或以其他方式剥离。如果None,根据水槽是否为TTY自动作出选择。
serialize (bool, optional) :在发送到接收器之前,记录的消息及其记录是否应该首先转换为JSON字符串。
backtrace (bool, optional) :格式化的异常跟踪是否应该向上扩展,超出捕获点,以显示生成错误的完整堆栈跟踪。
diagnose (bool, optional) :异常跟踪是否应该显示变量值以简化调试。在生产中,这应该设置为“False”,以避免泄漏敏感数据。
catch (bool, optional) :是否应该自动捕获接收器处理日志消息时发生的错误。如果True上显示异常消息 sys.stderr。但是,异常不会传播到调用者,从而防止应用程序崩溃。
如果当接收器(sink)是文件路径( pathlib.Path )时,可以应用下列参数,同时add() 会返回与所添加的接收器相关联的标识符:
compression (str or callable, optional) :日志文件在关闭时应转换为的压缩或归档格式,例如,"gz"、"bz2"、"xz"、"lzma"、"tar"、"tar.gz"、"tar.bz2"、"tar.xz"、"zip"
delay (bool, optional):是否应该在配置了接收器之后立即创建文件,或者延迟到第一个记录的消息。默认为' False '。
mode (str, optional) :与内置open()函数一样的打开模式。默认为' "a"(以附加模式打开文件)。
buffering (int, optional) :内置open()函数的缓冲策略,它默认为1(行缓冲文件)。本文地址:http://www.04007.cn/article/1192.html,未经许可,不得转载.
如下即添加了一个info日志文件并进行了日志格式、滚动配置。本文地址:http://www.04007.cn/article/1192.html,未经许可,不得转载.
logger.add( "./info.log", format="{time:YYYY-MM-DD HH:mm:ss,SSS} |{level}| {file} {line} {message}", level="INFO", encoding="utf-8", enqueue=True, rotation="1 month", retention="10 years" ) logger.info('This is info information')本文地址:http://www.04007.cn/article/1192.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/1192.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |