Python日志处理:logging模块详解,从零基础到精通,收藏这篇就够了!_python logging 使用教程

大家好,今天我要和大家聊聊Python中的日志处理。还在用print调试代码吗?或者遇到线上问题却不知道出了什么状况?这就说明你需要好好学习一下日志处理了!Python的logging模块是一个强大的日志框架,今天我就带大家掌握这个必备技能。

 ## 1. 日志的基本使用      logging模块提供了简单易用的日志功能,我们先来看最基础的用法:      ```python   import logging      # 配置基本的日志格式   logging.basicConfig(       level=logging.INFO,  # 设置日志级别       format='%(asctime)s - %(levelname)s - %(message)s'  # 设置日志格式   )      # 输出不同级别的日志   logging.debug('这是debug信息')  # 不会显示,因为级别设置为INFO   logging.info('程序开始运行')   logging.warning('这是一个警告')   logging.error('出错了!')   logging.critical('严重错误!')   

运行后你会看到类似这样的输出:

2025-02-22 10:30:15,123 - INFO - 程序开始运行   2025-02-22 10:30:15,124 - WARNING - 这是一个警告   2025-02-22 10:30:15,125 - ERROR - 出错了!   2025-02-22 10:30:15,126 - CRITICAL - 严重错误!   

小贴士:日志级别从低到高依次是:DEBUG < INFO < WARNING < ERROR < CRITICAL。只有大于等于设置级别的日志才会输出。

2. 配置日志输出到文件

在实际项目中,我们通常需要将日志保存到文件中:

import logging      # 配置日志输出到文件   logging.basicConfig(       level=logging.INFO,       format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',       filename='my_app.log',  # 指定日志文件       filemode='a'# 'a'表示追加模式,'w'表示覆盖模式   )      def process_data():       logging.info('开始处理数据...')       try:           result = 10 / 0# 故意制造一个错误       except Exception as e:           logging.error(f'处理数据时出错: {str(e)}')       else:           logging.info('数据处理完成')      process_data()   

3. 创建自定义的Logger

在大型项目中,我们通常需要创建多个Logger来分别处理不同模块的日志:

import logging      # 创建Logger对象   logger = logging.getLogger('my_app')   logger.setLevel(logging.DEBUG)      # 创建控制台处理器   console_handler = logging.StreamHandler()   console_handler.setLevel(logging.INFO)      # 创建文件处理器   file_handler = logging.FileHandler('app.log')   file_handler.setLevel(logging.DEBUG)      # 创建格式化器   formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')   console_handler.setFormatter(formatter)   file_handler.setFormatter(formatter)      # 添加处理器到Logger   logger.addHandler(console_handler)   logger.addHandler(file_handler)      # 使用Logger记录日志   def process_user(user_id):       logger.info(f'开始处理用户{user_id}的数据')       try:           # 模拟一些操作           if user_id < 0:               raise ValueError('用户ID不能为负数')           logger.debug(f'用户{user_id}的数据处理成功')       except Exception as e:           logger.error(f'处理用户{user_id}数据时出错: {str(e)}')      process_user(1)   process_user(-1)   

4. 日志轮转

当日志文件变得太大时,我们需要进行日志轮转:

import logging   from logging.handlers import RotatingFileHandler      # 创建Logger   logger = logging.getLogger('my_app')   logger.setLevel(logging.INFO)      # 创建RotatingFileHandler   # 最大文件大小为1MB,最多保留3个备份文件   handler = RotatingFileHandler(       'app.log',       maxBytes=1024*1024,  # 1MB       backupCount=3   )   handler.setFormatter(logging.Formatter(       '%(asctime)s - %(name)s - %(levelname)s - %(message)s'   ))   logger.addHandler(handler)      # 写入大量日志来测试轮转   for i in range(10000):       logger.info(f'这是第{i}条日志消息')   

5. 在类中使用日志

在面向对象编程中,我们可以这样使用日志:

import logging      class UserManager:       def __init__(self):           self.logger = logging.getLogger('user_manager')           self.logger.setLevel(logging.INFO)                      # 创建处理器和格式化器           handler = logging.StreamHandler()           formatter = logging.Formatter(               '%(asctime)s - %(name)s - %(levelname)s - %(message)s'           )           handler.setFormatter(formatter)           self.logger.addHandler(handler)              def create_user(self, username):           self.logger.info(f'正在创建用户: {username}')           try:               # 模拟用户创建过程               if len(username) < 3:                   raise ValueError('用户名太短')               self.logger.debug(f'用户{username}创建成功')           except Exception as e:               self.logger.error(f'创建用户{username}失败: {str(e)}')               raise      # 使用示例   manager = UserManager()   try:       manager.create_user('ab')   except:       pass   manager.create_user('alice')   

学习要点总结

  1. 日志的基本配置和使用

  2. 不同的日志级别及其应用场景

  3. 如何将日志输出到文件

  4. 创建和配置自定义Logger

  5. 日志轮转的实现

  6. 在类中集成日志功能

练习题

  1. 创建一个日志系统,同时将ERROR级别以上的日志写入错误日志文件,其他日志写入普通日志文件

  2. 实现一个带日志功能的装饰器,记录函数的调用信息

  3. 为一个Web应用添加完整的日志系统,记录访问日志和错误日志

  4. 实现一个按天轮转的日志系统

注意事项

  1. 避免在同一个程序中多次调用basicConfig

  2. 合理设置日志级别,避免记录过多无用信息

  3. 日志文件要定期清理,防止占用过多磁盘空间

  4. 敏感信息不要写入日志

  5. 多进程环境下需要使用专门的日志处理器

合理使用日志可以帮助我们更好地了解程序的运行状况,快速定位问题。要养成写日志的好习惯,让你的程序更加健壮和可维护。

如果你有任何问题,欢迎在评论区讨论。下期我们将学习Python的性能优化技巧,记得关注我,我们下期见!

黑客/网络安全学习路线

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

网络安全学习资源分享:

下面给大家分享一份2025最新版的网络安全学习路线资料,帮助新人小白更系统、更快速的学习黑客技术!

一、2025最新网络安全学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。


在这里插入图片描述

L1级别:网络安全的基础入门

L1阶段:我们会去了解计算机网络的基础知识,以及网络安全在行业的应用和分析;学习理解安全基础的核心原理,关键技术,以及PHP编程基础;通过证书考试,可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。


在这里插入图片描述

L2级别:网络安全的技术进阶

L2阶段我们会去学习渗透测试:包括情报收集、弱口令与口令爆破以及各大类型漏洞,还有漏洞挖掘和安全检查项目,可参加CISP-PTE证书考试。


在这里插入图片描述

L3级别:网络安全的高阶提升

L3阶段:我们会去学习反序列漏洞、RCE漏洞,也会学习到内网渗透实战、靶场实战和技术提取技术,系统学习Python编程和实战。参加CISP-PTE考试。


在这里插入图片描述

L4级别:网络安全的项目实战

L4阶段:我们会更加深入进行实战训练,包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题


在这里插入图片描述

整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握;而L3 L4更多的是通过项目实战来掌握核心技术,针对以上网安的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、技术文档和经典PDF书籍

书籍和学习文档资料是学习网络安全过程中必不可少的,我自己整理技术文档,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,(书籍含电子版PDF)


在这里插入图片描述

三、网络安全视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的网安视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。


在这里插入图片描述

四、网络安全护网行动/CTF比赛

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。


在这里插入图片描述

五、网络安全工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

在这里插入图片描述

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了技术之后,就需要开始准备面试,我们将提供精心整理的网安面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…


在这里插入图片描述


img

**读者福利 |** 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值