常用百宝箱——日志处理

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 常用百宝箱——日志处理

前言

       日志是记录特定时间段或事件的详细信息的文件或记录。它们通过时间戳和关键词或描述符来标识事件或行动。日志可以用于许多目的,例如:故障排除、网络安全、业务分析等等。常见的日志包括操作系统日志、应用程序日志、数据库日志等。日志可以通过软件工具进行分析和汇总,以帮助用户更好地了解系统的运行情况和性能状况,以及发现可能存在的问题和异常情况。

一、logging库

logging库是Python官方自带的日志处理模块,它提供了一种灵活、简单但功能强大的方式来记录应用程序的日志信息。使用logging库可以对应用程序的日志信息进行收集、过滤、格式化和输出控制等操作。


通过logging库可以实现以下功能:


记录应用程序的日志信息到文件或者控制台。


根据日志级别过滤输出的日志信息。


根据配置不同输出不同格式的日志信息。


根据配置自动轮转日志文件,防止日志文件过大。


支持多线程和多进程的应用程序。


可以自定义日志处理器,实现特定的日志处理需求。

二、logging日志等级

logging日志等级是Python标准库的一部分,用于在程序中记录和输出信息。日志等级描述了日志的重要性,用于过滤和控制日志输出。以下是Python logging库中的日志等级(按照从低到高的顺序):

logging日志等级

日志等级         描述
DEBUG 详细信息,用于调试程序
INFO 普通信息,用于描述程序运行状态
WARNING 警告信息,表示程序可能存在问题但并不严重
ERROR 错误信息,表示程序遇到了不可恢复的错误
CRITICAL 严重错误信息,表示程序遇到了致命的错误

通常情况下,使用INFO日志等级即可,但碰到调试问题时,可以使用DEBUG来进行详细追踪。而警告、错误和严重错误信息则需要引起重视,及时进行处理。可以通过设置日志等级及过滤器筛选所需日志输出。

三、logging四大组件

  1. logger:用于记录应用程序中发生的事件,如信息、错误和警告等。它们通常按照严重性级别被分为不同的级别,如debug、info、warning、error和critical。
  2. handler:用于控制何时和如何将记录的事件发送到目标位置,如控制台、文件、数据库或网络等。
  3. formatter:用于指定日志记录的格式,包括时间戳、级别和消息等。
  4. filter:用于控制哪些日志记录将被记录,以及哪些将被忽略。可以基于日志级别、消息内容和来源等条件进行筛选。

四、封装示例

下面是一个简单使用logging库输出日志的示例:

import logging
 
# 创建一个日志对象
logger = logging.getLogger(__name__)
 
# 设置日志级别
logger.setLevel(logging.INFO)
 
# 创建一个输出到控制台的处理器
console_handler = logging.StreamHandler()
 
# 设置日志格式
formatter = logging.Formatter('%(asctime)s:%(levelname)s:%(message)s')
console_handler.setFormatter(formatter)
 
# 添加处理器到日志对象中
logger.addHandler(console_handler)
 
# 输出日志
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')

以上示例代码中,首先创建了一个日志对象,并设置了日志输出的级别为INFO。然后创建了一个输出到控制台的处理器,并且设置了日志输出格式。最后添加处理器到日志对象中并输出日志。


运行以上代码,可以看到输出了不同级别的日志信息。因为设置了输出级别为INFO,所以只输出INFO及以上级别的日志信息,DEBUG和WARNING级别的日志信息没有被输出。

总结

除了logging库,Python还有以下库可以记录日志:

  1. Logbook:一个灵活、强大、易于使用的日志库;
  2. Loguru:易于使用的日志库,支持颜色和可选的Stack Trace;
  3. Sentry:一个全功能的日志记录、错误收集、实时事件监视和警报的平台;
  4. Python自带的syslog模块:可以将日志信息发送到本地syslog守护进程;
  5. Graylog:一个开源的日志管理平台,支持多种输入输出方式。

这些库都可以提供不同程度的日志记录功能,使用时需要根据实际需求进行选择。

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
传感器 数据采集 供应链
港口智能化,我们这样做!
港口智能化,我们这样做!
624 0
港口智能化,我们这样做!
|
数据采集 存储 人工智能
TripoSR开源!从单个图像快速生成 3D 对象!(附魔搭社区推理实战教程)
近期,VAST团队和Stability AI团队合作发布了TripoSR,可在一秒内从单个图像生成高质量3D对象。
|
8月前
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
5月前
|
人工智能 移动开发 IDE
AI + 低代码技术揭秘(十):平台实施
VTJ 提供多平台部署支持,涵盖 Web、移动及跨平台环境。通过专用适配器和低代码优化,实现统一开发体验,并支持 Element Plus、Vant UI 等框架,提升开发效率与应用性能。
206 57
|
3月前
|
人工智能 PHP 开发工具
Cursor 完全使用教程
Cursor 是由 Anysphere 实验室开发的一款 AI 驱动代码编辑器,基于 VSCode 深度定制,支持导入 VSCode 配置。相比 GitHub Copilot 插件,Cursor 在代码补全、对话生成、多文件修改等方面体验更优,支持快捷键快速调用 AI 功能,提供丰富上下文注记,提升开发效率。需订阅使用,适合追求高效编程体验的开发者。
|
9月前
|
XML JSON Java
Java中Log级别和解析
日志级别定义了日志信息的重要程度,从低到高依次为:TRACE(详细调试)、DEBUG(开发调试)、INFO(一般信息)、WARN(潜在问题)、ERROR(错误信息)和FATAL(严重错误)。开发人员可根据需要设置不同的日志级别,以控制日志输出量,避免影响性能或干扰问题排查。日志框架如Log4j 2由Logger、Appender和Layout组成,通过配置文件指定日志级别、输出目标和格式。
|
9月前
|
缓存 Java 关系型数据库
springboot事务-失效的情况
本文总结了常见的事务失效情况及解决方法,主要包括: 1. **事务注解失效**:`@Transaction`必须作用于`public`方法,且需被Spring容器管理。 2. **数据库引擎问题**:MyISAM不支持事务,应使用InnoDB。 3. **异常处理不当**:异常被捕获未抛出或不在默认捕获范围内。 4. **传播行为设置**:如设置为`Propagation.NOT_SUPPORTED`或`Propagation.REQUIRES_NEW`可能导致事务失效。 5. **类内方法调用**:同一类中方法调用导致事务失效,需通过代理类或其他方式解决。
326 0
|
Arthas 测试技术
Arthas下载与启动
Arthas下载与启动
1315 0
|
并行计算 关系型数据库 分布式数据库
朗坤智慧科技「LiEMS企业管理信息系统」通过PolarDB产品生态集成认证!
近日,朗坤智慧科技股份有限公司「LiEMS企业管理信息系统软件」通过PolarDB产品生态集成认证!
|
小程序 Java 开发工具
【Java】@Transactional事务套着ReentrantLock锁,锁竟然失效超卖了
本文通过一个生动的例子,探讨了Java中加锁仍可能出现超卖问题的原因及解决方案。作者“JavaDog程序狗”通过模拟空调租赁场景,详细解析了超卖现象及其背后的多线程并发问题。文章介绍了四种解决超卖的方法:乐观锁、悲观锁、分布式锁以及代码级锁,并重点讨论了ReentrantLock的使用。此外,还分析了事务套锁失效的原因及解决办法,强调了事务边界的重要性。
383 2
【Java】@Transactional事务套着ReentrantLock锁,锁竟然失效超卖了