Python日志记录:全面指南

基本原理

日志记录是软件开发中的一个核心组成部分,它帮助开发者跟踪程序的运行流程,捕获程序执行期间的重要事件。日志记录可以作为程序运行状态的连续监控,记录用户细节、IP地址访问信息等重要数据。当发生错误时,日志不仅提供堆栈跟踪,还能描绘出错误发生前程序的具体状态,这对于调试和故障排查至关重要。

此外,有策略地记录有用数据有助于:

  • 轻松调试错误。
  • 对应用程序进行性能分析,以制定扩展计划。
  • 理解使用模式,以支持营销策略的开发。

Python的标准库中包含了一个日志记录系统,使得开发者能够快速地将日志记录功能集成到应用程序中。

示例代码

示例1:基本日志记录配置
import logging# 配置日志级别为INFO,日志格式,并将日志输出到控制台
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s',handlers=[logging.StreamHandler()])# 记录不同级别的日志
logging.debug('这是一条DEBUG级别的日志')
logging.info('这是一条INFO级别的日志')
logging.warning('这是一条WARNING级别的日志')
logging.error('这是一条ERROR级别的日志')
logging.critical('这是一条CRITICAL级别的日志')

运行结果:

2023-04-05 10:30:00,000 - INFO - 这是一条INFO级别的日志
2023-04-05 10:30:00,000 - WARNING - 这是一条WARNING级别的日志
2023-04-05 10:30:00,000 - ERROR - 这是一条ERROR级别的日志
2023-04-05 10:30:00,000 - CRITICAL - 这是一条CRITICAL级别的日志
示例2:日志记录到文件
import logging# 配置日志级别为DEBUG,日志格式,并将日志输出到文件
logging.basicConfig(filename='app.log', filemode='w', level=logging.DEBUG,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')# 记录日志
logging.info('应用程序启动')
logging.debug('加载配置文件')

app.log 文件内容:

2023-04-05 10:35:00,000 - root - INFO - 应用程序启动
2023-04-05 10:35:00,000 - root - DEBUG - 加载配置文件
示例3:使用多个日志处理器
import logging# 创建一个日志记录器
logger = logging.getLogger('myapp')
logger.setLevel(logging.DEBUG)# 创建一个文件处理器和一个控制台处理器
file_handler = logging.FileHandler('myapp.log')
console_handler = logging.StreamHandler()# 为处理器设置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)# 将处理器添加到日志记录器
logger.addHandler(file_handler)
logger.addHandler(console_handler)# 记录日志
logger.debug('这是一个DEBUG级别的日志')
logger.info('这是一个INFO级别的日志')

myapp.log 文件内容:

2023-04-05 10:40:00,000 - myapp - DEBUG - 这是一个DEBUG级别的日志
2023-04-05 10:40:00,000 - myapp - INFO - 这是一个INFO级别的日志

控制台输出:

2023-04-05 10:40:00,000 - myapp - DEBUG - 这是一个DEBUG级别的日志
2023-04-05 10:40:00,000 - myapp - INFO - 这是一个INFO级别的日志

注意事项

  • 日志级别:日志级别从DEBUG到CRITICAL,DEBUG级别最低,CRITICAL级别最高。通常在生产环境中,只会记录INFO级别及以上的日志。
  • 日志格式:日志格式可以根据需要自定义,常用的字段包括时间戳、日志记录器名称、日志级别和日志消息。
  • 日志处理器:可以添加多个日志处理器来将日志输出到不同的目的地,如文件、数据库或远程服务器。
  • 资源管理:日志记录器在使用完毕后应关闭,以释放资源。使用with语句可以自动管理资源的关闭。

结论

Python的logging模块是一个强大且灵活的日志记录工具,它能够帮助开发者在开发和运维阶段更好地理解和管理程序的行为。通过合理配置和使用日志记录,可以提高程序的可靠性,优化性能,并为问题追踪提供宝贵的信息。

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

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

相关文章

MySql#MySql安装和配置

目录 一、卸载不需要的环境 二、安装mysql yum 源 三、开始安装 四、如果保证安装成功呢? 五、MySql 启动! 六、登录mysql 七、配置文件说明 八、设置开机启动! 本次安装是在Linux环境在centos7中完成 首先先将自己切换成root 一、…

基于springboot实现图书电子商务网站系统项目【项目源码+论文说明】

基于springboot实现图书电子商务网站系统演示 摘要 社会发展日新月异,用计算机应用实现数据管理功能已经算是很完善的了,但是随着移动互联网的到来,处理信息不再受制于地理位置的限制,处理信息及时高效,备受人们的喜爱…

flowable流程跳转或退回到网关上的用户节点后流程走不下去了

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

【JVM】class文件格式,JVM加载class文件流程,JVM运行时内存区域,对象分配内存流程

这篇文章本来只是想讲一下class文件格式,讲着讲着越讲越多。JVM这一块吧,知识比较散比较多,如果深研究下去如死扣《深入理解Java虚拟机》,这本书很深很细,全记住是不可能的,其实也没必要。趁这个机会直接把…

如何快速找出文件夹里的全部带有中文纯中文的文件

首先,需要用到的这个工具YTool: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 步骤 1、打开工具,切换到批量复制文件 2、鼠标移到右侧,点击搜索添加 3、设定查找范围、指定为文件、勾选 包含全部子文件夹&…

FP16与BF16区别

二者都是占用16bit空间。 FP16由1个符号位、5个指数位和10个尾数位组成。FP16在表达小数时具有较高的精度,但表示的最大范围相对BF16比较小。相比BF16,在表达较大的数时更容易出现上溢的情况。BF16由1个符号位、8个指数位和7个尾数位组成。相比于FP16&a…

RFC 791 (1)-导论

目录 浅论 IP是啥 IP可以管啥 操作 范例查看 提示:本系列将会开始RFC文档阅读,这里会给出我的一些笔记 浅论 我们这篇RFC文档描述的是IP和ICMP协议,我们都知道,在传统的OSI七层或者是现在被简化的五层:应用层&…

2024年Q1季度果酒行业线上市场数据分析:女性消费力量强劲!

随着短视频推广和健康饮酒理念的盛行,果酒凭借酒精度数低、口味丰富、富含多种营养成分等优势逐渐受到了消费者的青睐。 Q1季度,消费者对果酒需求依旧旺盛。根据鲸参谋数据显示,今年Q1季度,线上电商平台(某猫&#xf…

6S管理,真的有必要吗?

工厂里的物料不知道是什么时间堆放的,不知道这个是谁的,不知道还有没有用,不知道该不该处理掉,越积越多,想要的东西总是找不着,不要的东西总是“碍手碍脚”……可怕的是大家对这一些现象习以为常。 说起6S…

搬运5款小众,无广告,实用性拉满的软件

​ 你是否喜欢一些小众且无广告的软件?如果是的话,我这边有一些给你推荐的。 1.屏幕录制——OBS Studio ​ OBS Studio是一款广泛使用的实时流媒体和屏幕录制软件,适用于Windows、MacOS、Linux平台。它采用C、C和Qt编写,提供高质…

Keepalived实现LVS高可用

6.1 KeepalivedLVS集群介绍 Keepalived和LVS共同构建了一个高效的负载均衡和高可用性解决方案:LVS作为负载均衡器,负责在集群中的多个服务器间分配流量,以其高性能和可扩展性确保应用程序能够处理大量的并发请求;而Keepalived则作…

如何使用DEEPL免费翻译PDF

如何使用DEEPL免费翻译PDF 安装DEEPL取消PDF限制 安装DEEPL 安装教程比较多,这里不重复。 把英文pdf拖进去,点翻译,在下面的框中有已经翻译完毕的文档。 但是存在两个问题 问题1:这些文档是加密的。 问题2:带有DeepL标…

C#知识|上位机UI设计-详情窗体设计思路及流程(实例)

哈喽,你好啊,我是雷工! 上两节练习记录了登录窗体和主窗体的实现过程,本节继续练习内容窗体的实现,以下为练习笔记。 01 详情窗体效果展示: 02 添加窗体并设置属性 在之前练习项目的基础上添加一个Windows窗体,设置名称为:FrmIPManage.cs 设置窗体的边框和标题栏的外…

flink sql 优化

文章目录 一、参数方面二、资源方面三、总结 提示:实时flink sql 参考很多网上方法与自己实践方法汇总(版本:flink1.13) 一、参数方面 flink sql参数配置 //关闭详细算子链(默认为true),true后job性能会略微有提升。false则可以展示更详细的DAG图方便地位性能结点…

go mod

常用命令 初始化模块 go mod init 模块名下载 go.mod 文件中指明的所有依赖 go mod download github.com/gin-gonic/ginv1.9.(依赖路径)依赖对其(使引用的都是所依赖的) go mod tidy编辑go.mod go mod edit go mod edit -require"github.com/g…

jvm 马士兵 01 JVM简介,class文件结构

01.JVM是什么 JVM是一个跨平台的标准 JVM只识别class文件,符合JVM规范的class文件都可以被识别 u1 是一个字节 u2是两个字节

5款采用AMD Instinct MI300芯片的超酷AI和HPC服务器

我们收集了戴尔科技、联想、超微和技嘉的五款超酷人工智能和高性能计算服务器,这些服务器使用 AMD 的 Instinct MI300 芯片,该芯片于几个月前推出,旨在挑战 Nvidia 在人工智能计算领域的主导地位。 AMD 正在凭借其 Instinct MI300 加速器芯片…

新手必看!场外个股期权的权利金估算公式

场外个股期权的权利金估算公式 场外个股期权的权利金估算公式通常涉及多个因素,这些因素共同决定了权利金的具体数额。虽然具体的估算公式可能因不同的交易平台、交易规则和标的资产而有所差异,但一般来说,权利金的计算会考虑以下几个关键要…

毕业单纯的钻研嵌入式知识有前景吗?

毕业之后单纯地去钻研嵌入式知识到底有没有前景呢?不可否认的是,嵌入式领域有着较高的薪资待遇,并且还存在着巨大的上升空间。然而,要学习嵌入式开发并非易事,其中存在着诸多挑战。其中一个挑战就是需要深入理解计算机…

前端奇怪面试题总结

面试题总结 不修改下面的代码进行正常结构 这道题考的是迭代器和生成器的概念 let [a,b] {a:1,b:2}答案 对象缺少迭代器,需要手动加上 Object.prototype[Symbol.iterator] function* (){// return Object.values(this)[Symbol.iterator]()return yeild* Object.v…