常用百宝箱——日志处理

news2024/11/27 3:49:36

目录

前言

一、logging库

二、logging日志等级

三、logging四大组件

四、封装示例

总结


前言

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

一、logging库

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

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

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

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

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

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

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

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

二、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:一个开源的日志管理平台,支持多种输入输出方式。

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

6adf31c8c5dd4e6a83314f4805b30bc1.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1004950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

排产中的两种对立策略 - 负载均衡与成本最优

在APS系统设计中,根据不同的业务场景,会出现两种截然相反的策略需求,分别是(资源)负载均衡与成本最优(最低),两种策略分别适用于不同的业务场景。本文我们将这两种策略的适用场景、方案原理作初步探讨,并就这些策略在O…

SpringBoot项目--电脑商城【确认订单】

1.持久层[Mapper] 1.1规划需要执行的SQL语句 用户在购物车列表页中通过随机勾选相关的商品,在点击"结算"按钮后跳转到"确认订单页",在这个页面中需要展示用户在上个页面所勾选的"购物车列表页"中对应的数据.说白了也就是列表展示,且展示的内容还…

solidworks底部状态栏显示不出来

如下图所示,solidworks主界面下面的状态栏突然不见了。 怎么调出来? 第一步:点击视图菜单,用户界面,把状态栏前的勾勾上。 第二步:把视图下面的触摸模式关掉,这一点很容易被大家忽略。

代码随想录--哈希--两个数组的交集

题意:给定两个数组,编写一个函数来计算它们的交集。 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 import java.util.ArrayList; import java.util.HashMap; import java.util.List;public class SSS {public …

织密安全防线——记建行江门市分行推进反洗钱工作

建行广东省江门市分行多层次织密反洗钱防线,持续护航高质量发展。 健全架构 建行江门分行成立以“一把手”为组长的反洗钱工作领导小组。通过在部门、支行、网点层面分别设置反洗钱合规官、合规专员、情报专员、合规员等岗位,层层织密反洗钱防线。持续加…

【C++】构造函数意义 ( 构造函数显式调用与隐式调用 | 构造函数替代方案 - 初始化函数 | 初始化函数缺陷 | 默认构造函数 )

文章目录 一、构造函数意义1、类的构造函数2、构造函数显式调用与隐式调用3、构造函数替代方案 - 初始化函数4、初始化函数缺陷5、默认构造函数6、代码示例 - 初始化函数无法及时调用 一、构造函数意义 1、类的构造函数 C 提供的 构造函数 和 析构函数 作为 类实例对象的 初始化…

【性能测试】Jmeter插件之ServerAgent服务器性能监控工具的安装和使用

文章目录 安装插件安装ServerAgent 安装插件 1、在Jmeter官网:https://jmeter-plugins.org/wiki/PluginsManager/ 下载插件管理器Plugins-manager.jar 2、将JAR包放入到lib\ext目录下 3、重启Jmeter,可以在选项下看到Plugins Manager选项 4、安装…

解决golang无法下载依赖的奇葩问题

最近刚开始学习go,看了几个开源项目,遂下载好朋友的go开源项目,想着coding first,我得先跑起来,结果居然卡在依赖上。就像下图: 真的是头疼,反复执行 go mod tidy,发现本地库中也能下…

vue三个点…运算符时报错 Syntax Error: Unexpected token

出现以下问题报错: 解决: 在项目根目录新建一个名为.babelrc的文件 {"presets": ["stage-2"] }

分享一个基于微信小程序开发的高校学生毕业设计选题小程序的源码 lw 调试

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

pyechart练习三:黑色星期五用户画像

一、概述 数据集: 537577行 12列。 二、可视化 1、年龄/性别的各自用户占比 import pandas as pd from pyecharts.charts import Pie, Bar, Grid, Page, Boxplot import pyecharts.options as opts df pd.read_csv(./BlackFridaySales.csv) age_data df[Age].value_count…

简单介绍神经网络中不同优化器的数学原理及使用特性【含规律总结】

当涉及到优化器时,我们通常是在解决一个参数优化问题,也就是寻找能够使损失函数最小化的一组参数。当我们在无脑用adam时,有没有斟酌过用这个是否合适,或者说凭经验能够有目的性换用不同的优化器?是否用其他的优化器可…

41 个下载免费 3D 模型的最佳网站

推荐:使用 NSDT场景编辑器 快速搭建3D应用场景 1. Pikbest Pikbest是一个设计资源平台,提供超过3万件创意艺术品。您可以在Pikbest上找到设计模板,演示幻灯片,视频和音乐等。您可以找到不同的3D模型,例如婚礼装饰&…

Anaconda彻底卸载及重安装

一、彻底卸载Anaconda 1.1 先采用anaconda-clean包初步卸载 总体卸载思路:通过下载anaconda-clean包完成初步卸载,但由于在base下若下载anaconda-clean包会一直卡在Solving environment:阶段,因此首先要创建一个虚拟环境。具体步骤如下&…

freeRTOS系列教程之freeRTOS入门与工程实践【文档+视频教程+进阶视频教程】

《freeRTOS入门与工程实践》 前言课程内容授课方式 学前知识普及学前准备硬件准备资料准备 视频教程文档教程更好的阅读体验 前言 课程内容 嵌入式软件工程师的学习路线一般是:单片机->RTOS->Linux。当你掌握单片机开发后,如果要进一步提升编程水…

质数,思维,prime game

Prime Game - Gym 101981J - Virtual Judge (vjudge.net) Problem - 1520 (nefu.edu.cn) 解析: 这道题还是要考虑数的贡献 题解参考至(【ACM-ICPC 2018 南京现场赛 】 J.Prime Game ---- 思维素数筛_WangMeow的博客-CSDN博客) 第一个元素的…

Windows下使用Nginx反向代理访问MySQL数据库

安装Nginx 《Windows下安装Nginx》 配置13306端口访问3306端口的MySQL数据库 worker_processes 1;events {worker_connections 1024; }stream {upstream mysql {hash $remote_addr consistent;server 127.0.0.1:3306;# MySQL数据库集群#server 192.168.1.111:3306;}server…

领域驱动设计:DDD设计微服务代码模型

文章目录 DDD 分层架构微服务代码模型 只有建立了标准的微服务代码模型和代码规范后,我们才可以将领域对象所对应的代码对象放在合适的软件包的目录结构中。标准的代码模型可以让项目团队成员更好地理解代码,根据代码规范实现团队协作;还可以…

Linux下的编译器使用以及各个阶段的执行

程序的翻译 程序在形成可执行程序之前都经历过一系列十分复杂的过程,也就是我们程序的翻译,程序的翻译经过以下阶段: 预处理(进行宏替换) 编译(生成汇编) 汇编(生成机器可识别代码) 连接&#…

Linux--进程间通讯--FIFO(open打开)

1. 什么是FIFO FIFO命名管道,也叫有名管道,来区分管道pipe。管道pipe只能用于有血缘关系的进程间通信,但通过FIFO可以实现不相关的进程之间交换数据。FIFO是Linux基础文件类型中的一种,但是FIFO文件在磁盘上没有数据块&#xff0c…