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

news2024/11/16 9:51:29

日志记录在软件开发中扮演着至关重要的角色。它不仅可以帮助开发人员跟踪应用程序的状态和行为,还能提供有价值的诊断信息。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以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述

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

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

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

相关文章

数字孪生的开发平台

数字孪生在国内得到了越来越多的关注,一些公司和平台提供了数字孪生的开发服务。以下是一些国内数字孪生的开发平台或服务提供商,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.华为数字…

低功耗全极霍尔开关国产芯片D02,适用于手机或笔记本电脑等产品中,数字输出 2.4V~5.5V的电池供电

D02 是一款低功耗全极霍尔开关,用于检测施加的磁通量密度,并提供一个数字输出,该输出指示所感测磁通量幅度的当前状态。这些应用的一个例子是翻盖手机中的 ON/OFF 开关。 微功耗设计特别适合电池供电系统,如手机或笔记本电脑&…

短视频自媒体创作者都在用的去水印小程序

如今可以发短视频的平台越来越多,我们经常看到喜欢的视频想下载下来,或者当做手机壁纸,由于直接下载下来视频都会带有平台的水印,让我们用着看起来非常不美观,所以我们就要想办法去掉这个水印,下载没有水印…

HarmonyOS4.0从零开始的开发教程15HTTP数据请求

HarmonyOS(十三)HTTP数据请求 1 概述 日常生活中我们使用应用程序看新闻、发送消息等,都需要连接到互联网,从服务端获取数据。例如,新闻应用可以从新闻服务器中获取最新的热点新闻,从而给用户打造更加丰富…

ubuntu解决问题:E: Unable to locate package manpages-posix-dev

sudo apt-get install manpages-posix-dev 想要在ubuntu里面安装manpages-posix-dev这个包,发现弹出错误 E: Unable to locate package manpages-posix-dev 解决方法如下: 1 查看当前ubuntu的版本 abhishekitsfoss:~$ lsb_release -a No LSB module…

基于ssm神马物流系统论文

摘 要 本神马物流管理系统设计目标是实现神马物流的信息化管理,提高管理效率,使得神马物流管理作规范化、科学化、高效化。 本文重点阐述了神马物流管理系统的开发过程,以实际运用为开发背景,基于SSMVue框架,运用了Ja…

mybatis动态SQL-sql片段

1、建库建表 create database mybatis-example; use mybatis-example; create table emp (empNo varchar(40),empName varchar(100),sal int,deptno varchar(10) ); insert into emp values(e001,张三,8000,d001); insert into emp values(e002,李四,9000,d001); insert into…

用CHAT分析问题的作用

问CHAT:电网数据中心的数据生命周期管理的管理平台是数据资产目录管理平台,简述一下它的作用。 CHAT回复:数据资产目录管理平台 (Data Catalog Management Platform) 是电网数据中心对于数据生命周期管理的重要工具。 1. 提供统一视图&#…

量子计算挑战赛启动!空中客车公司和宝马集团联手发起

(图片来源:网络) 空中客车公司(Airbus)和宝马集团(BMW)共同发起了一项名为“探索量子迁移率”的全球量子计算挑战赛,旨在解决航空和汽车领域仍未克服的紧迫难题。 此次挑战赛汇聚了…

map|二分查找|离线查询|LeetCode:2736最大和查询

本文涉及的基础知识点 二分查找算法合集 题目 给你两个长度为 n 、下标从 0 开始的整数数组 nums1 和 nums2 ,另给你一个下标从 1 开始的二维数组 queries ,其中 queries[i] [xi, yi] 。 对于第 i 个查询,在所有满足 nums1[j] > xi 且…

css3 clip-path剪切图片

大致看了一下,反正以后用到就慢慢调吧 剪切四个角 clip-path: polygon(14px 0, calc(100% - 14px) 0, 100% 14px, 100% calc(100% - 14px), calc(100% - 14px) 100%, 14px 100%, 0 calc(100% - 14px), 0 14px); 三角形 clip-path: polygon(50% 0,0 100%, 100% 100…

工业级以太网交换机的功能介绍

随着互联网技术的迅猛发展,工业以太网在工业通信领域中发挥着重要作用。在整个工业通信行业中,工业以太网交换机作为关键的通信设备,具有非常重要的功能。那么,什么是工业以太网交换机呢,它有哪些功能呢? …

山西电力市场日前价格预测【2023-12-15】

1.日前价格预测 预测说明: 如上图所示,预测明日(2023-12-15)山西电力市场全天平均日前电价为279.14元/MWh。其中,最高日前电价为380.47元/MWh,预计出现在00:45。最低日前电价为181.13元/MWh,预…

Linux----1、初始Linux

# 初识Linux # 一、计算机资源介绍 计算机资源分为2 部分:硬件资源、软件资源 硬件: 一般硬件是指计算机的物理组成,由真实(看得见,摸得着)的设备组成的 软件: 软件一般是指应用程序&#x…

运筹学经典问题(六):设施选址问题

问题描述 设施选址问题(Facility Location Problem, FLP)也成选址-分配问题,是企业面临的一类重要问题:在哪里建造设施?建造多少?以及将哪些客户分配给哪些设施去服务? 以物流业的航空站点选…

被带偏的中国云计算,重归正途

文 | 智能相对论 作者 | 叶远风 阿里云战略聚焦公共云,对整个云计算市场而言都是一场自我审视。 从市场背景、行业发展、中外对比等多个方面,业界舆论给出了大量详实的数据分析,已经对阿里云为什么要聚焦公共云有了结论,这里不…

【学习笔记】V8垃圾回收策略

V8 V8是一款主流的JavaScript执行引擎V8采用即时编译,速度比较快V8内存设限,64位操作系统中上限为1.5G,32位系统中不超过800M V8垃圾回收策略 采用分代回收的思想内存分为新生代\老生代针对不同对象采用不同算法 v8常用的GC算法: 分代回收、空间复制、标记清除、标记整理、…

docker-compose 单机容器编排

dockerfile---yml文件 docker-compose需要用到 yml文件 yml文件是什么? 是一种标记语言,以竖列的形式展示序列化的数据格式,可读性高,类似于json格式。语法简单。 YAML通过缩进来表示数据结构,连续的项目用 - 减号来表…

JS基础之变量对象

JS基础之变量对象 变量对象基础变量对象全局上下文函数上下文执行过程进入执行上下文代码执行思考题 变量对象 基础 当JavaScript代码执行一段可执行代码(executable code)时,会创建对应的执行上下文(execution context&#xff…

什么是SEO优化

什么是SEO,百度其实就有答案,只是回答的很基础,说的都是基础概念,没有具体的体现在里面,SEO除了基础概念,还要有相应的构架,不然怎么弄都是一场空而已。 关于什么是SEO的文章导读? 1…