irpas技术客

〖Python零基础入门篇(57)〗- Python中的日志模块_全栈哈士奇

大大的周 5547

万叶集🎉 隐约雷鸣,阴霾天空。 🎉🎉 但盼风雨来,能留你在此。 🎉

前言: ? 作者简介:渴望力量的哈士奇 ?,大家可以叫我 🐶哈士奇🐶 ,一位致力于 TFS 赋能的博主 ? 🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


专栏系列(点击解锁)学习路线指引知识定位 🔥Python全栈白皮书🔥 零基础入门篇 以浅显易懂的方式轻松入门,让你彻底爱上Python的魅力。 语法进阶篇 主要围绕多线程编程、正则表达式学习、含贴近实战的项目练习 。 自动化办公篇 实现日常办公软件的自动化操作,节省时间、提高办公效率。 自动化测试实战篇 从实战的角度出发,先人一步,快速转型测试开发工程师。 数据库开发实战篇 更新中 爬虫入门与实战 更新中 数据分析篇 更新中 前端入门+flask 全栈篇 更新中 django+vue全栈篇 更新中 拓展-人工智能入门 更新中 网络安全之路 踩坑篇 记录学习及演练过程中遇到的坑,便于后来居上者 网安知识扫盲篇 三天打鱼,不深入了解原理,只会让你成为脚本小子。 vulhub靶场漏洞复现 让漏洞复现变得简单,让安全研究者更加专注于漏洞原理本身。 shell编程篇 不涉及linux基础,最终案例会偏向于安全加固方向。 [待完结] WEB漏洞攻防篇 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 渗透工具使用集锦 2021年9月3日停止更新,转战先知社区等安全社区及小密圈 点点点工程师 测试神器 - Charles 软件测试数据包抓包分析神器 测试神器 - Fiddler 一文学会 fiddle ,学不会倒立吃翔,稀得! 测试神器 - Jmeter 不仅是性能测试神器,更可用于搭建轻量级接口自动化测试框架。 RobotFrameWork Python实现的自动化测试利器,该篇章仅介绍UI自动化部分。 Java实现UI自动化 文档写于2016年,Java实现的UI自动化,仍有借鉴意义。 MonkeyRunner 该工具目前的应用场景已不多,文档已删,为了排版好看才留着。


文章目录 日志的作用日志的等级logging 模块的使用logging 模块演示小案例

OK,今天我们来学习一下 python 中的日志模块,日志模块也是我们日后的开发工作中使用率很高的模块之一,接下来们就看一看今天具体要学习日志模块中的那些内容吧。

日志的作用

说到日志,我们完全可以想象为现实生活中的日记。日记是我们平时记录我们生活中点点滴滴的一种方法,而日志我们可以认为是 程序的日记 ,程序的日记是用来记录程序的行为,一般来说我们可以通过日志记录一些程序的重要信息。

比如哪里报错了?报错原因是什么?这个时候我们就可以通过查看日志知道哪里出了什么错误,并且是什么原因造成的,这样就可以帮助我们快速查错并修复bug。

其实并不仅仅是错误的信息,我们还可以通过日志记录程序运行的状态。

日志的等级

既然明确了日志的作用,在平时的日志记录过程中我们可以根据自己不同的业务需要进行不同等级的日志的记录。

debug:可以帮助我们在平时的开发过程中,帮助我们查看一些输出的信息是否正确。它可以替代我们平时使用的 print() 函数。

info:它代表了一般的消息类信息,只是为了记录一些程序的行为,比如程序执行到了某个位置,进行一些简单的记录。

warnning:该等级是一种警告,一般来说程序不会出错,但是可能存在一定的潜在风险。

error:一般对应业务中出现了重大问题。比如异常或者业务逻辑不应该执行到某种情况。我们都可以通过error来进行记录。

critical:比 error 更严重的级别,不过一般来说 error 级别已经很严重了,所以 critical 很少使用。

logging 模块的使用

其实 logging 模块使用起来还是比较复杂的,不过我们初学乍道,只需要学习使用 logging.basicConfig 就可以满足我们最基本的日志记录功能。

接下来我们看一下 logging.basicConfig 需要传入哪些参数以及如何使用。

参数名作用举例lever日志输出的最低等级lever=logging.DEBUGformat日志输出格式见下文的 format 具体格式filename存储位置filename=‘d://debug.log’filemode输入模式filemode=“w”

关于 lever ,lerver的作用是表示最低的日志等级记录。如上文中的 lever=logging.DEBUG ,就表示记录包含 DEBUG 级别在内的所有日志等级。

format具体格式如下:

格式符含义%(levelname)s日志级别名称%(pathname)s当前执行程序的路径(即脚本所在的位置)%(filename)s执行脚本程序名%(lineno)d日志当前的行号%(asctime)s打印日志的时间%(message)s日志信息

常用的日志 fromat 常用方案:fromat = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s'

logging 模块演示小案例 import logging logging.basicConfig( # 针对 basicConfig 进行配置(basicConfig 其实就是对 logging 模块进行动态的调整,之后可以直接使用) level=logging.INFO, # INFO 等级以下的日志不会被记录 format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', # 日志输出格式 filename='back.log', # 日志存放路径(存放在当前相对路径) filemode='w', # 输入模式;如果当前我们文件已经存在,可以使用 'a' 模式替代 'w' 模式 # 与文件写入的模式相似,'w' 模式为没有文件时创建文件;'a' 模式为追加内容写入日志文件 ) logging.debug('这是一条 debug 信息') logging.info('这是一条 日志记录 信息') logging.warning('这是一条 警告 信息') logging.error('这是一条 重大的错误 信息') # >>> 执行结果如下图

上面我们使用的 filemode 模式是 'w' 模式,现在我们改为 'a' 模式,尝试将日志追加进入 back.log 文件。

import logging logging.basicConfig( # 针对 basicConfig 进行配置(basicConfig 其实就是对 logging 模块进行动态的调整,之后可以直接使用) level=logging.INFO, # INFO 等级以下的日志不会被记录 format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', # 日志输出格式 filename='back.log', # 日志存放路径(存放在当前相对路径) filemode='a', # 输入模式;如果当前我们文件已经存在,可以使用 'a' 模式替代 'w' 模式 # 与文件写入的模式相似,'w' 模式为没有文件时创建文件;'a' 模式为追加内容写入日志文件 ) logging.debug('这是一条 debug 信息 ---> \'a\' 模式第二次写入') logging.info('这是一条 日志记录 信息 ---> \'a\' 模式第二次写入') logging.warning('这是一条 警告 信息 ---> \'a\' 模式第二次写入') logging.error('这是一条 重大的错误 信息 ---> \'a\' 模式第二次写入') # >>> 执行结果如下图

这里关于文件是否存在,使用 ‘w’ 模式还是 ‘a’ 模式,我们完全可以通过 os 模块进行路径文件的判断,所以我们针对上文的脚本再进行优化一下。

import logging import os def init_log(path): if os.path.exists(path): mode = 'a' else: mode = 'w' logging.basicConfig( # 针对 basicConfig 进行配置(basicConfig 其实就是对 logging 模块进行动态的调整,之后可以直接使用) level=logging.INFO, # INFO 等级以下的日志不会被记录 format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', # 日志输出格式 filename='back.log', # 日志存放路径(存放在当前相对路径) filemode=mode, # 输入模式;如果当前我们文件已经存在,可以使用 'a' 模式替代 'w' 模式 # 与文件写入的模式相似,'w' 模式为没有文件时创建文件;'a' 模式为追加内容写入日志文件 ) return logging current_path = os.getcwd() path = os.path.join(current_path, 'back.log') log = init_log(path) # 初始化返回的 init_log() 函数 , 其实就是 return logging log.debug('这是一条 debug 信息 ---> 第三次写入') log.info('这是一条 日志记录 信息 ---> 第三次写入') log.warning('这是一条 警告 信息 ---> 第三次写入') log.error('这是一条 重大的错误 信息 ---> 第三次写入') # >>> 执行结果如下图:


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Python零基础入门篇57 #Python中的日志模块 #OK今天我们来学习一下 #Python