python函数内日志 python日志处理( 三 )


如图 logging 一样,loguru 也有定义日志等级 。不同的日志等级,输出效果也不一样(默认的等级由低到高是 DEBUG 、 INFO 、 WARNING 、 ERROR 、 CRITICAL  , 也可以自己使用 level 函数定义) 。
类似 logging 中的 logger.addHandler,loguru统一使用 add 函数来管理格式、文件输出、过滤等操作,它提供了许多参数来实现 logger.addHandler 中的配置更加简单方便 。
其中 sink 是最重要的参数,可以传入不同的数据类型 。传入文件路径、文件句柄、 sys.stderr 、甚至 logging 模块的 Handler 如 FileHandler 、 StreamHandler 等,这样就可以快速实现自定义的 Handler 配置 。
通过给 remove 方法传递 add 方法返回的对象, 可以删除 add 方法添加的 sink,这里的 remove 并不是删除 test2.log 文件,而是停止向该文件输出日志,需要需要继续记录日志则需要重新 add 日志文件 。
用 rotation 、 retention 、 compression 进行日志窗口、更新、压缩管理 。
支持控制台输出添加颜色, 除了基础色,loguru 甚至允许16进制、RGB格式的颜色值和加粗、下划线等样式 。
【python函数内日志 python日志处理】 使用装饰器 @logger.catch 可以和 logging 一样使用 logger.exception 函数来记录异常信息 。
使用 exception 方法输出的异常信息包含堆栈信息和当前变量的值 , 方便问题定位 。
使用 serialize可以将日志转换为 JSON 格式,enqueue可以保证多线程、多进程安全 。
修改时间格式 。
Python日志—Python日志模块logging介绍从事与软件相关工作的人,应该都听过“日志”一词 。
日志就是跟踪软件运行时事件的方法,为了能够在程序运行过程中记录错误 。
通过日志记录程序的运行,方便我们查询信息,以便追踪问题、进行维护和调试、还是数据分析 。
并且各编程语言都形成了各自的日志体系和相应的框架 。
日志的作用总结:
首先我们要树立一个观点,那就是“不是为了记录日志而记录日志,日志也不是随意记的” 。要实现能够只通过日志文件还原整个程序执行的过程,达到能透明地看到程序里执行情况 , 每个线程每个过程到底执行结果的目的 。日志就像飞机的黑匣子一样,应当能够复原异常的整个现场乃至细节 。
在项目中 , 日志这个功能非常重要,我们要重视起来 。
在Python中 , 使用logging模块来进行日志的处理 。
logging是Python的内置模块,主要用于将日志信息进行格式化内容输出,可将格式化内容输出到文件 , 也可输出到屏幕 。
我们在开发过程中,常用print()函数来进行调试 , 但是在实际应用的部署时,我们要将日志信息输出到文件中,方便后续查找以及备份 。
在我们使用日志管理时,我们也可以将日志格式化成Json对象转存到ELK中方便图形化查看及管理 。
logging模块将日志系统从高向低依次定义了四个类,分别是logger(日志器)、handler(处理器)、filter(过滤器)和formatter(格式器) 。其中由日志器生成的实例将接管原本日志记录函数logging.log的功能 。
说明:
我们先来思考下下面的两个问题:
在软件开发阶段或部署开发环境时 , 为了尽可能详细的查看应用程序的运行状态来保证上线后的稳定性,我们可能需要把该应用程序所有的运行日志全部记录下来进行分析,这是非常耗费机器性能的 。
当应用程序正式发布或在生产环境部署应用程序时,我们通常只需要记录应用程序的异常信息、错误信息等,这样既可以减小服务器的I/O压力 , 也可以避免我们在排查故障时被淹没在日志的海洋里 。

推荐阅读