程序员必读:Python 中如何完美处理日志记录?

日志记录在软件开发中扮演着至关重要的角色。它不仅可以帮助开发人员跟踪应用程序的状态和行为,还能提供有价值的诊断信息。Python 提供了内置的 logging 模块,为开发者提供了一个强大且灵活的日志记录工具。

日志的重要性

在软件开发中,对于应用程序的行为进行监控和记录至关重要。日志记录不仅可以在应用程序出现错误时提供关键的调试信息,还能够帮助分析应用程序的性能、用户行为和其他重要数据。

目的和结构

本文将深入探讨 Python 中优雅处理日志的方法。我们将详细介绍 logging 模块的使用,并提供丰富的示例和最佳实践,以帮助开发者规划和实施更完善的日志记录方案。从基础的日志记录到高级的配置,我们将全面覆盖如何使用 Python 处理日志。

1. 基本的日志记录

使用 logging 模块记录日志

Python 的 logging 模块是一个功能强大且灵活的日志记录工具。下面是一个基本的配置和记录日志的示例:

import logging

logging.basicConfig(level=logging.DEBUG, filename='app.log', filemode='w',
                    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 创建日志记录器
logger = logging.getLogger('my_app')

# 记录日志
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

以上示例演示了如何设置全局的日志级别、日志文件和格式化,并记录不同级别的日志信息。

2. 高级日志配置

格式化和处理器

日志格式化和处理器对于记录清晰和可读的日志非常重要。下面展示如何使用不同的格式和处理器记录日志信息:

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)

logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

以上示例展示了如何自定义日志格式并使用不同的处理器,将日志消息输出到不同的目标(例如控制台)。

3. 高级日志配置

日志记录器配置文件

使用配置文件管理日志记录器配置是一种更为清晰和易于维护的方式。以下是一个示例,展示如何通过配置文件设置日志记录器:

import logging.config

logging.config.fileConfig('logging.conf')

logger = logging.getLogger('my_app')

logging.conf 文件内容示例:

[loggers]
keys=root,my_app

[logger_my_app]
level=DEBUG
handlers=consoleHandler

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=basicFormatter
args=(sys.stdout,)

[formatter_basicFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

配置文件定义了日志记录器的级别、处理器和格式化信息,使得配置更加集中和易于修改。

日志记录的过滤器

日志过滤器可以根据特定的条件来过滤和记录日志信息。以下是一个过滤器的简单示例:

class InfoFilter(logging.Filter):
    def filter(self, record):
        return record.levelno == logging.INFO

console_handler.addFilter(InfoFilter())

在这个示例中,过滤器只会记录级别为 INFO 的日志信息到控制台处理器。

日志旋转

日志旋转是管理日志文件大小和数量的重要工具。下面是一个日志旋转的示例:

from logging.handlers import RotatingFileHandler

handler = RotatingFileHandler('app.log', maxBytes=10000, backupCount=5)
logger.addHandler(handler)

此示例展示了如何配置日志旋转,使得日志文件能够按文件大小进行切割,并保留一定数量的备份文件。

总结

优雅地处理日志对于应用程序的健康运行至关重要。logging 模块为开发者提供了多种方法来记录和管理日志信息。从基础的配置到高级的处理器和过滤器,在本文中全面探讨了 Python 中如何优雅地处理日志。


如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
Python全套学习资料

在这里插入图片描述

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓
在这里插入图片描述

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

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

相关文章

uni-app开发者必看:如何轻松适配微信小程序?

一、v-if避坑 看uniapp官方文档上,v-if是支持多端支持的。小程序上仅支持微信小程序,用hbuilderx运行到小程序后就会变成微信的指令语法wx:if。这里有个坑,要特别注意! v-if指令表达式 如果指令表达式为json对象,而…

数据可视化免费化的双面影响探析

近年来数据可视化的免费化也越来越明显,今天就以我作为可视化设计师的经验来和大家分析一下,数据可视化工具免费化所带来的利与弊。 先从好处入手,最明显的就是免费化可以让数据可视化工具得到更广泛的使用。 免费数据可视化工具使得更多人可…

基于 Webpack5 Module Federation 的业务解耦实践

前言 本文中会提到很多目前数栈中使用的特定名词,统一做下解释描述 dt-common:每个子产品都会引入的公共包(类似 NPM 包) AppMenus:在子产品中快速进入到其他子产品的导航栏,统一维护在 dt-common 中,子产品从 dt-com…

06.CSS选择器

CSS选择器 1.选择器的优先级 介绍 通过不同的选择器,选中相同的元素 ,并且为相同的样式名设置不同的值时,就发生了样式的冲突 到底应用哪个样式,此时就需要看优先级了 简单描述 行内样式 > ID选择器 > 类选择器 > …

用 SpringBoot+Redis 解决海量重复提交问题

1 前言 在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:**任意多次执行所产生的影响均与一次执行的影响相同 。**按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理…

一站式API解决方案:工程通API连接营销系统、CRM与用户运营,推动无代码集成

无代码开发的革命:简化电商与CRM系统集成 在信息技术迅猛发展的今天,电商企业迫切需要一个高效、便捷的系统来管理客户关系和销售流程。然而,传统的系统集成方式往往因复杂的API开发而令人望而却步。工程通API应运而生,它的无代码…

Halcon 模板匹配基于相关性

文章目录 基于相关性使用匹配助手 基于相关性 适用场景 模板匹配:当你需要在图像中找到一个已知的模板时,例如在工业生产线上检测产品的特定标识或零件的特征时,相关性匹配是一种简单而有效的方法。实时应用:相关性匹配通常具有较…

<软考高项备考>《论文专题 - 8 论文的项目背景之背景段的写法》

1 背景特征 比较好的背景特征: 语句通顺,简洁明了逻辑清晰、层次分明(建议分1段-2段描写)项目内容描写清楚,和规模相符合(从你写的项目内容和业务描述上,能够勾勒出项目的原型图)技术新颖、路线清晰、描写…

我的隐私计算学习——匿踪查询

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成。 (一)PIR的介绍 ​ 匿踪查询,即隐私信息检索(Private InformationRetrieval,PIR),是安全多方计算…

Epicypher:CUTANA™ E. coli Spike-in DNA

来源于Escherichia coli(E.coli)的片段DNA可以用作核酸酶靶向切割和释放(CUT&RUN)的实验标准化的spike-in对照。产品CUTANA™ E. coli Spike-in DNA含有足够的材料,可用于100-200个CUT&RUN样本(高丰…

Linux系统编程总结:进程间通信之网络编程

这一块内容放在进程间通信也没有问题,因为进程间通信研究的就是进程之间如何进行协同操作、如何交换数据进行对话的过程,上一篇文章介绍的几种机制都是用在一台机器上的进程互相进行通信的,而网络套接字这种机制则是用来为两台不同机器上的进…

使用apriori来挖掘关联规则

1、apriori最重要的三个概念: 1、支持度 支持度 (Support):指某个商品组合出现的次数与总订单数之间的比例。 在这个例子中,我们可以看到“牛奶”出现了 4 次,那么这 5 笔订单中“牛奶”的支持度就是 4/50.8。 2、置信度 置信度…

Win10错误代码0x80070005的解决方法

在Win10电脑操作过程中,用户可能会遇到各种各样的问题,从而影响到自己正常使用电脑办公。现在,就有用户遇到了错误码0x80070005的提示,但不清楚具体的解决方法。下面小编给大家分享不同的解决方法,解决后Win10电脑就能…

IP属地变化背后的原因

随着互联网的普及和技术的不断发展,IP属地变化的现象越来越受到人们的关注。近日,有网友发现自己的IP属地发生了变化,引发了广泛讨论。那么,IP属地为什么会发生变化呢? 首先,网络环境的变化是导致IP属地变化…

如何设置自动通过好友申请+自动回复?

1. 提供即时服务 当用户发送微信消息时,微信可以自动回复相应的内容,如欢迎语、订单确认、问题解答等,提供即时服务,不需要用户等待或反复发送消息。这种自动回复可以在特定的时间内自动通过好友请求,发送预先设置的…

PFA气体吸收瓶耐强酸PFA洗气瓶PFA鼓泡瓶特点分析

洗气瓶的别称有多种,取决于不同的地区和行业。以下是一些常见的别称: 1. 清洗瓶:因其主要用途是清洗气体样品而得名。 2. 干燥瓶:用于干燥气体样品的容器。 3. 气体净化瓶:用于净化气体样品的设备。 4. 气体清洗器…

性能测试 —— 认识 jmeter (性能测试流程 性能测试通过标准)

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。 1 性能测试技能树   性能测试是一项综合性的工作,致力于暴露性能问题,评估系统性能趋势。性能测试工作实质上是利用工具去模拟大量用户来验证系统…

docker-harbor的私有仓库

仓库 保存镜像 私有,自定义用户的形式登录仓库,拉取或者上传镜像(内部管理的用户) harbor:VMware公司开发的,开源的企业级的docker registry项目 帮助用户快速的搭建一个企业级的docker仓库的服务 支持中文 harbor…

磁盘空间分析工具你知道几个!8个易学易用的磁盘分析工具,让你对硬盘知根知底

以下是我对可用磁盘空间分析工具(有时称为存储分析器)的首选列表。在我的电脑上试用了其中几个应用程序后,我可以确认这里列出的应用程序是100%免费使用的,并且在弄清楚是什么填满了硬盘、闪存驱动器或外部驱动器中做了很多工作,其中一些甚至允许你直接从程序中删除文件。…

曹操出行集成:无代码API连接广告推广与用户运营

曹操出行集成的必要性 随着科技的不断进步,无代码API集成已经成为企业提升效率、优化营销策略的重要手段。对于新能源汽车共享服务领导者曹操出行而言,将其服务集成至企业营销系统中,不仅可以提升客户体验,还能加强品牌的市场竞争…