OpenCode: 智能AI编程助手,革命性的软件开发体验
围绕 OpenCode 这类 AI 编程助手的体验与使用场景,整理它在理解上下文、辅助开发和提升效率方面的价值,也记录个人对 AI 编程工具边界的观察。
整理 Python 日志库 Loguru 的基本用法和实践场景,对比传统 logging 的使用体验,方便在小项目中快速接入日志。
在进入公司实习接触到一个比较大型的项目之后,才发现日志是多么有用的东西。日志不仅可以帮助开发者快速定位问题,还能记录程序的运行状态,方便后续的维护和优化。对于 Python,虽然 Python 自带了强大的日志库 logging,但它的配置相对较为繁琐。而 loguru 作为一个第三方库,却可以将这个过程变得十分简单,同时输出十分优雅。
在实际开发中,日志的作用主要体现在以下几个方面:
关于编程的问题,当然是官方文档先行。我们来快速查看一个例子:
from loguru import logger
logger.add(".\loguru.log", format="{time} {name}:{line} {level} {message}", filter="", encoding="utf-8")
@logger.catch
def divide_by_0(x:int):
logger.info("=============divide by 0==============")
return x/0
@logger.catch
def access_nonexistent_dict_key():
logger.info("=============access_nonexistent_dict_key==============")
my_dict = {"name": "Alice", "age": 30}
return my_dict["address"]
if __name__ =="__main__":
divide_by_0(6)
access_nonexistent_dict_key()
在这个例子里,Loguru 体现了它的三个特性:
Logger 只需要在导入的时候进行一次配置,无论多复杂的项目,也只需要配置一次即可。在上面的示例中,我们主要设置了其输出格式和编码,同时将日志保留到项目目录的 log 文件夹中。当然,在实际生产项目中,我们可以结合 os.getlogin() 或其他路径来使用。
以下是一些常用的 logger.add() 参数及其描述:
关于装饰器是什么可以参考我的文章。使用装饰器 @logger.catch,可以给函数套上一层类似 try-except 的错误收集机制,然后可以优雅而清晰地获得错误信息:

Loguru 会自动将不同的部分标识出来,出错的部分会将其值表示出来。
调试程序不会还在使用 print() 吧?不仅格式杂乱,而且后期还不方便删除。试试 logger.debug(msg),将调试信息非常方便地输出出来,后期在配置中屏蔽 DEBUG 级别的日志即可。
以下是一个完整的示例,展示如何使用不同日志等级输出:
from loguru import logger
# 配置日志输出到文件,设置日志级别为DEBUG
logger.add("debug.log", level="DEBUG", format="{time} {level} {message}", encoding="utf-8")
# 输出不同级别的日志
logger.debug("这是一个调试信息")
logger.info("这是一个普通信息")
logger.warning("这是一个警告信息")
logger.error("这是一个错误信息")
logger.critical("这是一个严重错误信息")
# 使用装饰器捕获函数中的异常
@logger.catch
def divide_by_zero():
return 1 / 0
divide_by_zero()
在这个示例中:
Loguru 的强大之处在于它简化了日志配置的复杂性,同时提供了丰富的功能,使得日志记录变得简单而高效。无论是开发阶段的调试,还是生产环境中的问题排查,Loguru 都是一个非常实用的工具。