python代码执行过程记录_优雅的记录Python程序日志
1
本篇概要
logging模块的调用;
保存log日志为文件;
调整输入日志等级;
修改日志消息格式;
2
前言
在使用Python编写程序的过程中,我们经常使用print()函数打印一些信息到控制台,方便的查看结果和一些调试信息,以判断程序的运行是否正常。
print()确实是方便和易用,但是也有一些缺点,比如打印出来的信息不能保存,再次运行程序时,之前打印出来的结果就被清空了。
而对于一些后台运行的程序,或者出现的异常,比如Web应用,直接将信息使用print()打印出来,显然不利于程序出现故障之后的排错和调试。
这个时候,一个程序日志记录器就显得很有必要了。
日志器用于跟踪记录程序运行时发生的一些事件,一般而言,一条日志记录由事件的描述性信息、可选的可变数据组成。
3
Python的内置日志模块
Python中内置一个日志模块——logging,通过它我们就可以很方便的在Python代码中记录简单的程序日志。
logging模块将日志分为了五个等级:DEBUG:调试信息,通常在诊断问题的时候用得着;
INFO:普通信息,确认程序安装预期运行;
WARNING:警告信息,表示发生了意想不到的事情,或者指示接下来可能会出现一些问题,但是程序还是继续运行;
ERROR:错误信息,程序运行中出现了一些问题,一些功能没有执行;
CRITICAL:危险信息,一个严重的错误,导致程序无法继续运行。
上述的五个等级的日志信息分别使用:logging模块的debug()、info()、warning()、error()、critical()方法来实现。
默认情况下,logging使用的日志级别是warning,这表示只有在这个级别及其以上级别的日志信息才会被记录,所以默认情况下debug信息和info信息都不会被显示出来。
我们来测试一下:
运行代码,控制台会显示:
ERROR:root:出现了错误
WARNING:root:警告信息
INFO级别的信息,果然没有显示出来。
我们使用logging模块的basicConfig()方法,修改一个日志输出等级为INFO :
这样,控制台中就能够输出INFO级别的信息了:
ERROR:root:出现了错误
INFO:root:打印信息
WARNING:root:警告信息
记录的日志信息除了打印到控制台之外,我们还能够将其写入文件中。同样是使用basicConfig()方法进行设置:
运行程序,会生成一个名为test.log的文本文件,里面是日志记录的内容:
如果我们重复运行上面的代码,会发现,日志信息会追加在test.log文件的内容后面:
如果不想这样怎么办,同样在basicConfig()方法中使用filemode参数进行设置:
这样,生成的日志文件就是一个新的:
在上面输出的日志信息我们可以发现,所有的消息都是'日志级别:角色:消息'这样的格式输出的。
如果我们想改变日志消息的格式呢?同样使用basicConfig()方法,利用其format参数进行设置。先来看一个例子:
我们设置格式为消息等级和消息内容。输出的日志内容中,已经没有了root这个信息了:
logging支持的格式还不止这两种,我们来看看:%(asctime)s:日志创建时的普通时间;
%(created)f:日志创建时的时间(由time.time()返回);
%(filename)s:文件名;
%(funcName)s:调用日志记录的函数;
%(levelname)s:日志消息的文本级别;
%(levelno)s:日志消息的数字级别;
%(lineno)d:调用日志消息的行号;
%(msecs)d:创建时间的毫秒部分;
%(message)s:日志消息;
%(name)s:日志器的名称;
%(pathname)s:记录日志的源文件的路径名;
%(process)d:进程ID;
%(processName)s:进程名;
%(thread)d:线程ID;
%(threadName)s:线程名;
%(relativeCreated)d:创建日志记录的时间(以毫秒为单位)
借助于这些格式,我们可以自定义日志记录,比如显示时间:
这样,日志中除了记录消息等级、消息信息外,还会记录上消息创建的时间:
对于logging模块,还有更加深入的用法,我们下一篇继续。
python代码执行过程记录_优雅的记录Python程序日志相关推荐
- python代码执行过程记录_这款神器,能把 Python 代码执行过程看地一清二楚
原标题:这款神器,能把 Python 代码执行过程看地一清二楚 本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 机器之心报道,参与:一鸣.杜伟 Python 是一门 ...
- python代码执行过程记录_[原创]IDAPython+OdbgScript动态获取程序执行流程
题记: 最近知道了有一种方法,可以获取到程序的执行流程,具体做法是先获取程序中每一个函数的地址,在这些地址上设置断点,然后让程序运行起来,hook调试器,断点中断时,不要停下来继续执行,并记录命中的断 ...
- 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个
欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...
- 为什么python代码运行不了_为什么我的python代码不能正常运行?
我的python代码如下,但它不能工作.在import random secret = random.randint (1, 99) guess = 0 tries = 0 print "A ...
- python代码少的作品_原创 8行python代码展示程序员从入门到大神(或跑路)的全部状态...
一行python代码可以做什么? 人生苦短,我用python.python的世界里无处不在的简洁和短小,往往一行代码可以实现很多有意思功能. 你敢想象你从入门python代码.网络达人.反重力怪才.爱 ...
- python代码执行过程记录_详解python程序中记录日志的方法
日志可以用来记录应用程序的状态.错误和信息消息,也经常作为调试程序的工具.它的重要性就不多说了,直接进入正题. python提供了一个标准的日志接口,就是logging模块.日志级别有DEBUG.IN ...
- python代码弄成网站_原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想)...
原创:用python把链接指向的网页直接生成图片的http服务及网站(含源码及思想) 总体思想: 希望让调用方通过 http调用传入一个需要生成图片的网页链接生成一个网页的图片并返回图片链接 最终调用 ...
- python代码该怎么简化_如何简化这个python代码(从书中分配)?
我在学习 "Python for Everybody" 这本书是由查尔斯R.Severance和我写的,从第7章开始,我有一个问题要问练习2. 任务是通过 mbox-short.t ...
- python代码修改nginx配置_生产环境部署python代码(django+uwsgi+nginx)
基础环境不做介绍,在django开发web项目完成后,一直使用django自带的服务器进行调试: python manage.py runserver 0.0.0.0:8080 这个服务器在开发时使用 ...
最新文章
- 2021 EdgeX中国挑战赛盛大开幕,英特尔赋能开发者,助力创新方案落地
- python入门编程-对没有编程基础的人来说,直接学Python入门IT合适吗?
- 操作系统原理:全局页面置换算法、工作集页置换、常驻集页置换、抖动问题
- QT的QRenderPass类的使用
- JQuery中的样式切换
- 最全前端开发面试问题及答案整理
- socket 编程入门教程(一)TCP server 端:6、创建“通讯 ”嵌套字
- Linux内存管理:TLB flush操作
- C语言中二级指针的作用
- PHP 将微信录音arm格式文件转mp3格式
- jquery name选择器_【百战程序员从开始到植发】之jquery
- modbus协议的认识和libmodbus库使用
- 面试系列之-如何选择外包与自研公司
- 罗克韦尔AB PLC(RSLogix 5000)在线修改程序的具体方法示例
- 微信 小程序 python 渲染_你用python写过那些好玩的微信小程序?
- Ubuntu Xfce桌面系统设置项
- SAP中批量采购冻结供应商实例
- DevTools 无法加载源映射: 无法加载http://localhost:8080/css/bootstrap.css.map 的内容:HTTP 错误: 状态代码 404,net::ERR_HTT
- 《图解TCP/IP》阅读笔记(第九章)—— 网络安全相关
- 云计算厂商2018年营收突破2500亿美元的“里程碑”