常用百宝箱——日志处理

本文涉及的产品
日志服务 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:一个开源的日志管理平台,支持多种输入输出方式。

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
存储 JSON 运维
直击痛点,详解 K8s 日志采集最佳实践
在 Kubernetes 中,日志采集和普通虚拟机的方式有很大不同,相对实现难度和部署代价也略大,但若使用恰当则比传统方式自动化程度更高、运维代价更低。
直击痛点,详解 K8s 日志采集最佳实践
|
14天前
|
数据采集 存储 消息中间件
构建高效数据管道:从数据采集到分析的实战指南
在数据的海洋中航行,我们需要精准而高效的工具来捕捉、传输和处理信息。本文将引导你穿越技术性文章的迷雾,用简洁明了的语言和代码示例,展现如何打造一个高性能的数据管道。无论你是初学者还是资深开发者,这篇文章都将为你提供宝贵的知识财富。让我们一起解锁数据的力量,探索其背后的奥秘。
41 15
|
3月前
|
数据采集 消息中间件 存储
实时数据处理的终极武器:Databricks与Confluent联手打造数据采集与分析的全新篇章!
【9月更文挑战第3天】本文介绍如何结合Databricks与Confluent实现高效实时数据处理。Databricks基于Apache Spark提供简便的大数据处理方式,Confluent则以Kafka为核心,助力实时数据传输。文章详细阐述了利用Kafka进行数据采集,通过Delta Lake存储并导入数据,最终在Databricks上完成数据分析的全流程,展示了一套完整的实时数据处理方案。
75 3
|
4月前
|
消息中间件 NoSQL 数据处理
如何进行实时数据处理:技术深度剖析
【8月更文挑战第25天】实时数据处理是现代企业不可或缺的能力之一,它要求系统具备高吞吐量、低延迟、高可用性和可扩展性。通过合理的架构设计、技术选型和持续优化,可以构建出满足业务需求的实时数据处理系统。未来,随着技术的不断进步和应用场景的不断拓展,实时数据处理将在更多领域发挥重要作用。
|
5月前
|
存储 数据可视化 数据挖掘
实时数据分析系统的构建与优化
【7月更文挑战第29天】实时数据分析系统的构建与优化是一个复杂而细致的过程,需要从需求分析、数据源确定、数据采集与传输、数据处理与分析、数据存储、数据可视化、系统部署与配置、监控与优化等多个方面进行综合考虑。通过选择合适的技术栈和优化策略,可以构建出高效、稳定的实时数据分析系统,为企业决策提供强有力的支持。
|
7月前
|
SQL 存储 监控
日志问题精要:分析与总结
该文档讲述了应用系统日志记录的重要性和规则。主要目的是记录操作轨迹、监控系统状态和回溯故障。日志记录点包括系统入口、调用其他模块、调用结束、出口和出错时。内容应遵循UTF-8编码,避免敏感信息,按INFO级别记录,及时、完整且安全。日志输出要控制频率和长度,不影响系统性能,并按策略备份和清理。日志等级分为DEBUG、INFO、WARN、ERROR和FATAL。日志文件应有明确目录结构,大小有限制,并定期清理。注意事项包括输出异常堆栈、避免打印对象实例的hashCode、选择合适的日志框架和格式,并支持动态修改日志级别。还要实现链路追踪,确保在多线程环境中正确记录日志。
102 0
|
数据采集 消息中间件 存储
大数据数据采集的数据采集(收集/聚合)的Logstash之概念的开源数据收集引擎
在大数据领域,数据采集是非常重要的一环。而Logstash作为一个开源的数据收集引擎,可以帮助我们轻松地实现数据的采集、聚合和传输等功能。本文将会对Logstash进行详细介绍。
287 0
|
存储 Kubernetes 数据可视化
9款日志管理工具大比拼,选型必备!
9款日志管理工具大比拼,选型必备!
|
SQL 存储 缓存
【视频特辑】数据分析不卡顿,十亿数据0.3秒搞定!看看Quick引擎是如何做到的吧~
报表加载慢、分析卡顿导致思路被打断...常常会给数据分析师造成很大困扰。 不如试试Quick引擎,十亿数据只需0.3秒就可以完成数据分析!
306 0
【视频特辑】数据分析不卡顿,十亿数据0.3秒搞定!看看Quick引擎是如何做到的吧~
|
SQL 数据采集 存储
冬季实战营第五期学习报告5:基于Elasticsearch+Fink的日志全观测最佳实践
直播带练:基于Elasticsearch+Fink的日志全观测最佳实践

热门文章

最新文章