用Python的logging库记录日志

news/2024/2/23 20:56:52/文章来源:https://blog.csdn.net/Linshaodan520/article/details/135622616

Python的logging模块提供了一种灵活可配置的日志记录系统,可用于监测程序运行时的信息,方便开发者进行故障排查和性能优化。

下面的代码配置了一个简单的日志记录器,通过logging库记录程序运行日志,其中,logging库包含了五种日志级别,并按照一定格式 format 将日志信息保存到指定文件中 example.log,我们逐一展开介绍日志的这些内容。

# 配置日志记录器
logging.basicConfig(filename='example.log', level=logging.INFO,format='%(asctime)s [%(levelname)s]: %(message)s')# 记录不同级别的日志
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')

记录日志流程

  • 配置日志记录器
    • filename: StrPath
    • format: str
    • level: _Level
    • stream: SupportsWrite[str]
  • 记录不同级别的日志


配置日志记录器

logging 库允许通过配置文件或编程方式配置日志记录系统,以适应不同的应用场景,配置日志记录器通过 logging.basicConfig()进行,这里仅介绍简单基础的配置参数(如下所示),更多的配置参数及功能可以自行探索。

filename: StrPath

如果没有指定该参数,则记录器默认会将日志输出打印到控制台。

当指定了该参数后,会将日志保存到相应路径的文件内,并可以通过filemode: str指定文件打开模式,若无指定模式,则默认为追加模式 a(有同名文件则追加新日志,无则新建)。

format: str

指定日志消息的字符串格式。

例如上面的代码例子:format='%(asctime)s [%(levelname)s]: %(message)s',其中 '%(asctime)s' 表示日志记录的时间,%()s表示将asctime插入到括号中并格式化为字符串,'%(levelname)s' 表示日志级别,'%(message)s' 表示日志消息的内容,具体的字符串格式可以根据需求进行定制。

level: _Level

指定一个日志级别,只有达到该级别或更高级别的日志消息才会被记录,以此来控制日志的详细程度。

例如:设置了 level=logging.WARNING,则只会记录 WARNING、ERROR、CRITICAL级别的日志,而忽略 DEBUG、INFO 级别的日志。

stream: SupportsWrite[str]

将日志消息输出到流,该参数与 filename 参数相冲突,若同时设置了两个相冲突的参数,则 stream 参数自动被忽略。

记录不同级别的日志

logging 模块定义了五种日志级别,包括 DEBUG、INFO、WARNING、ERROR 和 CRITICAL。日志级别用于指示日志消息的严重程度,在配置日志记录器时,可以有选择地控制输出的详细程度。

不同日志级别的差异:

  1. DEBUG:调试信息,用在开发和调试阶段追踪代码执行过程中的详细信息,不应该在生产环境中使用;
  2. INFO:程序正常运行时的信息,用于生产环境中输出一般性的运行时信息,以判断程序是否按预期进行工作;
  3. WARNING:潜在的问题或不太常见的情况信息;
  4. ERROR:程序中发生的错误,但不一定导致程序终止;
  5. CRITICAL:程序中比较严重的错误信息,通常会终止程序。

如上面的代码例子所示,通过调用 logging.debug、logging.info、logging.warning、logging.error、logging.critical 可以记录不同级别的日志消息。这些消息将根据记录器的配置被写入到文件 ‘example.log’ 中。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SQL注入】SQLMAP v1.7.11.1 汉化版

下载链接 【SQL注入】SQLMAP v1.7.11.1 汉化版 简介 SQLMAP是一款开源的自动化SQL注入工具,用于扫描和利用Web应用程序中的SQL注入漏洞。它在安全测试领域被广泛应用,可用于检测和利用SQL注入漏洞,以验证应用程序的安全性。 SQL注入是一种…

初识OpenCV

首先你得保证你的虚拟机Ubuntu能上网 可看 http://t.csdnimg.cn/bZs6c 打开终端输入 sudo apt-get install libopencv-dev 回车 输入密码 回车 遇到Y/N 回车 OpenCV在线文档 opencv 文档链接 点zip可以下载,点前面的直接在线浏览,但是很慢 https…

k8s云原生环境搭建笔记——第二篇

目录 1、使用普通方式安装prometheus和grafana1.1、安装kube-state-metrics容器1.1.1、下载并修改yaml文件1.1.2、导入kube-state-metrics镜像1.1.3、执行yaml文件目录 1.2、安装node-exploer1.2.1、创建名称空间prometheus1.2.2、执行yaml 1.3、安装prometheus1.3.1、创建集群…

基于python集成学习算法XGBoost农业数据可视化分析预测系统

文章目录 基于python集成学习算法XGBoost农业数据可视化分析预测系统一、项目简介二、开发环境三、项目技术四、功能结构五、功能实现模型构建封装类用于网格调参训练模型系统可视化数据请求接口模型评分 0.5*mse 六、系统实现七、总结 基于python集成学习算法XGBoost农业数据可…

多行SQL转成单行SQL

如下图所示 将以上多行SQL转成单行SQL 正则表达式如下 (?s)$[^a-zA-Z()0-9]*结果如下 灵活使用,也未必只能使用Sublime Text 提供了一个在线工具

[Docker] Docker为什么出现

Docker为什么出现 一款产品: 开发–上线 -->两套环境 | 应用配置 开发即运维! 环境配置十分麻烦,每一个机器都要部署环境(Redis, ES, Hadoop) 费时费力 项目带上配置环境安装打包。 传统: 开发jar&…

基于pyqt5+scapy 根据ip 具体端口 进行扫描 的程序

先给出代码 import sysfrom PyQt5 import uic from PyQt5.QtWidgets import *from scapy.all import * import argparse import logging from scapy.layers.inet import IP, TCP from scapy.sendrecv import sr1class MyWindow(QWidget):def __init__(self):super().__init__(…

AI人工智能工程师证书专业认证培训班有用吗?

当然有用,它即让自身技术技能有所提升,也拿到行内有含金量的证书,让自己在选择职业、升职加薪中更有竞争力。但是要擦亮眼睛,建议大家如果要找人工智能培训,就找性价比较高的培训班, 人工智能AI培训班怎么…

IP风险画像:源头防范网络攻击的全面策略

在当今数字化的时代,网络攻击呈现多样化和复杂化的趋势,为了确保网络的安全,制定全面的IP风险画像并从源头防范网络攻击是至关重要的。ip数据云将探讨如何通过建立IP风险画像来识别和应对潜在的威胁,从而实现更加安全可靠的网络环…

UML-用例图

提示:用例图是软件建模的开始,软件建模中的其他图形都将以用例图为依据。用例图列举了系统所需要实现的所有功能,除了用于软件开发的需求分析阶段,也可用于软件的系统测试阶段。 UML-用例图 一、用例图的基础知识1.用例图的构成元…

Spring Boot 3 + Vue 3实战:引入数据库实现用户登录功能

文章目录 一、实战概述二、实战步骤(一)创建数据库(二)创建用户表(三)后端项目引入数据库1、添加相关依赖2、用户实体类保持不变3、编写应用配置文件4、创建用户映射器接口5、创建用户服务类6、修改登录控制…

Linux集锦大全【持续更新】

文章目录 Linux集锦大全【持续更新】Linux最常用的几个归档和压缩命令解压方法之一 tar语法压缩文件查看压缩文件的内容解压文件 解压方法之一 zip语法参数参考实例仅保存文件名 解压命令之一 unzip基本命令指定目录解压不解压某些文件 解压命令之一 gzip Linux最危险的几个命令…

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2)

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2) 在 https://zhangphil.blog.csdn.net/article/details/135374279 基础上,增加一个功能,当手指在上面的图片…

元宇宙商城LightCycle如何重塑我们的数字生活

在数字化时代,元宇宙的概念不再是科幻小说中的奇思妙想,而是逐渐成为我们日常生活的一部分。在这一领域,LightCycle项目以其独特的视角和创新技术,不仅在游戏领域取得了突破,更是在重塑我们数字生活的方式方面发挥了巨…

面试题总结-分布式总结

Nginx 篇 【1】简述一下什么是Nginx,它有什么优势和功能? Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达 50,000 个并发连接数。Nginx主要提供功能有 http服务…

免费3d模型库怎么下载?

3D模型库是提供3D模型资源下载的平台,用户可以在这里找到各种类型的3D模型,如建筑、道具、人物、动物等。那么3d模型库怎么免费下载? 1、打开3D模型库免费网站建e,并在搜索框中输入您需要的3D模型关键词,如建筑、道具、人物等。 …

操作系统概述

概述 文章目录 概述定义功能特征并发共享并发与共享的关系虚拟异步 发展与分类手工操作阶段批处理阶段分时操作系统实时操作系统网络操作系统分布式操作系统个人计算机操作系统 运行机制程序是如何运行的?内核程序应用程序特权指令非特权指令内核态用户态内核态与用…

【软件测试学习笔记1】测试基础

1.软件测试的定义 软件的定义:控制计算机硬件工作的工具 软件的基本组成:页面客户端,代码服务器,数据服务器 软件产生的过程:需求产生(产品经理),需求文档,设计效果图…

STM32之OLED显示

一、模块介绍 1、常见的显示设备 LED、数码管、点阵、LCD屏(1602/12864)、OLED屏(消费电子) 2、OLED屏的概述 OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电激光显示(Organic Electroluminesenc…

css宽度适应内容

废话不多说,看如下demo,我需要将下面这个盒子的宽度变成内容自适应 方法有很多,如下 父元素设置display:flex 实现子元素宽度适应内容 如下给父元素设置flex能实现宽度自适应内容 <!DOCTYPE html><html lang"en"><head><meta charset"U…