GitHub:你的日志记录方式何必是logging!!!

hello,小伙伴们,大家好,今天给大家介绍的开源项目是:loguru,这个开源项目是一个Python简易日志库,这个开源项目的宗旨是通过添加一系列有用的功能来解决标准记录器的注意事项,从而减少 Python日志记录的痛苦。

我们使用logging的配置方法基本上是这样的:

import logging

logging.basicConfig(
    filename='test.log',
    level=logging.DEBUG,
    format='[line:%(lineno)d] - %(funcName)s: %(asctime)s - %(levelname)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
)

使用官方自带的logging模块,每次创建项目都要自己去配置一下才可以,经常码代码使用起来有点吗发,但是使用这个loguru模块,只需要两行代码即可完成以上配置,简单易用。

安装


pip install loguru

使用方法


最简单的使用方法,只需要倒入模块,然后debug输出,看控制台效果即可。

from loguru import logger

logger.debug("That's it, beautiful and simple logging!")

打印在控制台中是彩色的!

如果你的终端兼容,loguru会自动为日志添加颜色。你可以通过使用接收器格式的标记标签来定义自己喜欢的样式。

logger.add(sys.stdout, colorize=True, format="<green>{time}</green> <level>{message}</level>")
输出到文件中

只需要添加一行代码即可

from loguru import logger

# 添加到名为demo.log文件中
logger.add("demo.log")
logger.debug("That's it, beautiful and simple logging!")

输出到文件中

以时间为文件名分割日志,可以这样做:

from loguru import logger

# 以时间分割日志
logger.add('file_{time}.log')

logger.debug("That's it, beautiful and simple logging!")

效果展示(看文件名称)

文件控制的高级用法


logger.add("rotation.log", rotation="500 MB")

以上配置可以实现每 500MB 存储一个文件,每个 log 文件过大就会新创建一个 log 文件。我们在配置 log 名字时加上了一个 time 占位符,这样在生成时可以自动将时间替换进去,生成一个文件名包含时间的 log 文件。

我们也可以使用rotation参数实现定时创建 log 文件,例如:

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

这样就是实现每天 12点新创建一个 log 文件输出了。

另外我们也可以配置 log 文件的循环时间,比如每隔两周创建一个 log 文件,写法如下:

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

这样我们就可以实现两周创建一个 log 文件了。

不知道大家有没有遇到过这样的情况,很多情况下,一些非常久远的 log 对我们来说并没有什么用处了,它白白占据了一些存储空间,不清除掉就会非常浪费。retention 这个参数可以配置日志的最长保留时间。

比如我们想要设置日志文件最长保留 7 天,可以这么来配置:

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

这样 log 文件里面就会保留最新 7 天的 log,老师再也不用担心 log 沉积的问题。

loguru 还可以配置文件的压缩格式,比如使用 zip 文件格式保存,如下:

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

这样可以更加节省存储空间。

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

这样在添加参数就非常方便了。

Traceback 记录

在很多情况下,如果遇到运行错误,而我们在打印输出 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

根据需要进行结构化日志记录


希望对日志进行序列化以便于解析或传递日志?使用该serialize参数,每条日志消息在发送到已配置的接收器之前将转换为JSON字符串。

logger.add('file_{time}.log', serialize=True)
# {"text": "2020-07-15 21:47:33.793 | DEBUG    | __main__:<module>:14 - That's it, beautiful and simple logging!\n", "record": {"elapsed": {"repr": "0:00:00.017317", "seconds": 0.017317}, "exception": null, "extra": {}, "file": {"name": "loguru_demo.py", "path": "/Users/notes/modules/loguru_demo.py"}, "function": "<module>", "level": {"icon": "\ud83d\udc1e", "name": "DEBUG", "no": 10}, "line": 14, "message": "That's it, beautiful and simple logging!", "module": "loguru_demo", "name": "__main__", "process": {"id": 7280, "name": "MainProcess"}, "thread": {"id": 4458839488, "name": "MainThread"}, "time": {"repr": "2020-07-15 21:47:33.793271+08:00", "timestamp": 1594820853.793271}}}

邮件通知


Loguru可以轻松地与功能强大的notifiers库结合使用(必须单独安装),以在程序意外失败时接收电子邮件或发送其他多种通知。

import notifiers

params = {
    "username": "you@gmail.com",
    "password": "abc123",
    "to": "dest@gmail.com"
}

# Send a single notification
notifier = notifiers.get_notifier("gmail")
notifier.notify(message="The application is running!", **params)

# Be alerted on each error message
from notifiers.logging import NotificationHandler

handler = NotificationHandler("gmail", defaults=params)
logger.add(handler, level="ERROR")

或者配合ES使用

####比内置日志记录快10倍
尽管在大多数情况下,日志记录对性能的影响可以忽略不计,但零成本的日志记录器将允许在任何地方使用它而无需过多担心。在即将发布的版本中,Loguru的关键功能将以C语言实现,以实现最大速度。

以上就是loguru的基本用法了,感兴趣的小伙伴可以研究一下这个的用法,特别简单易用,赶快去配置到你的项目中吧!

开源地址:https://github.com/Delgan/loguru

今天的推荐不知道大家喜欢吗?如果你们喜欢话,请在文章底部留言或点赞,以表示对我的支持,你们的留言,点赞,转发关注是我持续更新的动力哦!

关注公众号回复:"1024",免费领取一大波学习资源,先到先得哦!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 想要下载commons-logging,你可以按照以下步骤进行操作: 1. 打开浏览器并搜索"commons-logging下载"或直接访问Apache官方网站。 2. 在搜索结果中找到合适的下载链接或导航至Apache官方的commons-logging页面。 3. 确保选择与你的操作系统(如Windows、Linux、Mac等)和所需的commons-logging版本相匹配的下载选项。 4. 点击下载链接,浏览器通常会将文件保存在预设的下载文件夹中。你可以选择保存文件的位置。 5. 下载完成后,你可以在下载文件夹或保存的位置找到该文件。 6. 解压缩下载文件。可以通过右键点击文件并选择"解压缩"或使用压缩工具进行解压缩操作。 7. 解压缩后,你将获得commons-logging的目录和文件。你可以根据自己的需求,将这些文件复制到你的项目中。 8. 完成以上步骤后,你就成功地下载了commons-logging。你可以根据实际需要在你的项目中使用它,通过日志记录和管理方式进行必要的调试和追踪。 请注意,以上步骤仅是一般指导,具体情况可能因你的操作系统、下载源和文件版本而有所不同。为了确保正确地下载并使用commons-logging,建议你参考Apache官方的文档和说明。 ### 回答2: 要下载commons-logging,可以按照以下步骤进行操作: 1. 打开包含commons-logging的官方网站或者任意可信的软件下载网站。 2. 在网站的搜索栏中输入“commons-logging”,然后点击搜索按钮。 3. 在搜索结果中找到commons-logging,并且确认这是最新的稳定版本。 4. 点击下载按钮,开始下载commons-logging的安装包。 5. 下载完成后,打开下载目录,找到刚刚下载的commons-logging安装包。 6. 双击安装包,启动安装程序。 7. 在安装程序中,阅读并接受软件许可协议。 8. 选择安装位置,可以保留默认设置,或者根据个人需求选择其他位置。 9. 点击“安装”按钮,开始安装commons-logging。 10. 完成安装后,关闭安装程序。 现在,你已经成功地下载了commons-logging。你可以在你的项目中使用commons-logging来实现日志记录功能,提高程序的可维护性和调试性。 ### 回答3: commons-logging 是一个开源的Java日志库,用于在Java应用程序中进行日志记录。它提供了一种简单且灵活的方式来管理应用程序中的日志输出。 要下载commons-logging,首先需要访问其官方网站或源代码管理平台,如Apache官方网站或GitHub。在该网站上,你可以找到commons-logging的最新版本,并选择适合你的需求的下载链接。 下载commons-logging的最常见方式是通过二进制包(.jar文件)。你可以选择下载包含所有必需文件的完整包,也可以下载仅包含核心库的基本包。选择完整包可以确保你拥有所有可用的功能和依赖项,但基本包可能更适合只需基本日志记录功能的应用程序。 下载完成后,你可以将commons-logging的jar文件添加到你的项目中。具体操作方式取决于你所使用的集成开发环境(IDE)或构建工具。如果你使用的是IDE,可以通过在项目配置中添加外部依赖项来导入该jar文件。如果你使用的是构建工具如Gradle或Maven,你可以在项目配置文件中添加对commons-logging的依赖项,然后重新构建你的项目。 一旦commons-logging成功下载并添加到你的项目中,你就可以在代码中使用其提供的API来记录日志信息。这些API包括不同级别的日志记录方法,如debug、info、warn和error等。你可以根据需要选择适当的级别,并使用合适的参数记录日志消息。 总之,为了下载commons-logging,你需要找到官方网站或源代码管理平台上的下载链接,选择合适的包并将其添加到你的项目中。然后,你可以使用commons-logging的API来记录和管理你的日志信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值