【Python】改进版的Logging库:彩色显示+位置标注

【Python】改进版的Logging库:彩色显示+位置标注

开发原因

众所周知,Python的Log日志依赖于Logging库,几乎所有的Python程序打印日志都是这个库。

49978c2d6eda7a96a5a3bbbf655a7a1d

我用了一段时间这个库,发现几个影响日志体验的地方,比如不同的日志等级不好做区分,日志具体是在哪里被抛出的也不好做判断。于是我决定自己写一个。

功能介绍

  • 不同的日志等级均以不同的颜色打印,区分更明显
  • 日志带上了响应时间,在翻阅日志时更好定位问题;
  • 日志还能显示具体打印日志的程序路径与具体在哪一行输出的日志,并适配VSCode的Ctrl+单击快速跳转
  • 体积小巧,整个库只有7行代码,甚至不到1KB,在Linux环境下编译成.so文件也不到3KB

演示截图

52ba9babdd17cc642570656224c176c7

5418914979e77988bcf446be96c0549a

bb54a83330920b4f7807f38a7fde2405

之前发的那个655字节,现在优化后仅需651字节。

功能用法

# 引入库
import log

log.debug("这是一条Debug日志")
log.info("这是一条Info日志")
log.warning("这是一条Warning日志")
log.error("这是一条Error日志")
log.success("这是一条Success日志")

目前存在的问题

  • 未添加默认日志等级控制,这意味着在生产环境也输出包括Debug等级的日志
  • 无法将日志保存为文件

程序源码

from rich import print; import time, inspect
def log(level, message): print(f"{level} {time.strftime('%H:%M:%S', time.localtime())} [bold]From {inspect.currentframe().f_back.f_back.f_code.co_filename}, line {inspect.currentframe().f_back.f_back.f_lineno}[/bold] {message}")
error = lambda message: log('[bold red][ Error ][/bold red]', message)
info = lambda message: log('[bold blue][ Info ][/bold blue]', message)
success = lambda message: log('[bold green][ Success ][/bold green]', message)
warning = lambda message: log('[bold yellow][ Warn ][/bold yellow]', message)
debug = lambda message: log('[bold cyan][ Debug ][/bold cyan]', message)

该库允许转载并以MIT开源,请保留原作者“@于小丘 www.yxqi.cn”这段信息。

该库允许内置于你的商业项目中,但严禁单独销售该库!再次声明本库完全开源免费!

© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享