Python 日志记录与程序流追踪(基础篇)
日志记录(Logging)
More than
每次用 terminal debug 时都要手动在各种可能出现 bug 的地方 print 相关信息来确认 bug 的位置;
每次完成 debug 后为了避免输出太多细节信息和代码整洁,又需要把几个关键位置的 print 注释掉甚至删掉;
当下次出 bug 时,继续上述步骤。。。
有没有更好的方法呢?
等级(Level )
Python 3 中提供了非常方便的日志记录库 logging,可以记录不同等级(level)的日志信息。系统默认的等级有:
- DEBUG - 等级最低,一般只有在调试程序时显示的提示信息;
- INFO - 用于追踪、确认程序运行正常;
- WARNING - 表示一些不期望事情的发生或即将发生(比如网络状况差,磁盘空间即将耗尽等)但不影响程序运行;
- ERROR - 由于某些问题,导致程序的部分功能出错;
- CRITICAL - 等级最高,用于提示严重错误,严重到可能让程序崩溃。
logging 中的默认等级是 WARNING;亦即,logging.level缺省时,等级低于 WARNING 的信息(DEBUG、INFO)不会被日志记录。
基本用法
初始化更改等级为 DEBUG
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug('Message from DEBUG')
logging.info('Message from INFO')
logging.warning('Message from WARNING')
运行后将在 stdout 显示日志信息:
DEBUG:root:Message from DEBUG
INFO:root:Message from INFO
WARNING:root:Message from WARNING
记录到日志文件 “example.log”
import logging
logging.basicConfig(filename='example.log', level=logging.DEBUG)
logging.debug('Message from DEBUG')
logging.info('Message from INFO')
logging.warning('Message from WARNING')
运行后查看文件 example.log:
$ cat example.log
将看到日志信息。
注意:文件操作模式默认为 “append”,即不覆盖旧文件内容。
每次运行覆盖日志文件
import logging
logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)
logging.debug('Message from DEBUG')
logging.info('Message from INFO')
logging.warning('Message from WARNING')
自定义日志文件格式
import logging
logging.basicConfig(filename='data_conversion.log',
filemode='w',
format='%(asctime)s [%(levelname)s]: %(message)s',
datefmt='%Y/%m/%d %I:%M:%S %p',
level=logging.INFO)
logging.debug('Message from DEBUG')
logging.info('Message from INFO')
logging.warning('Message from WARNING')
日志文件内容为:
2019/01/28 10:26:29 PM [DEBUG]: Message from DEBUG
2019/01/28 10:26:29 PM [INFO]: Message from INFO
2019/01/28 10:26:29 PM [WARNING]: Message from WARNING
根据以上内容就可以简单地追踪程序流程和关键信息了。
Written with StackEdit.
Python 日志记录与程序流追踪(基础篇)的更多相关文章
- Python日志记录(Logging)
日志记录跟程序的测试相关,并且在大幅度更改程序内核时很有用,它可以帮助我们找到问题和错误的所在.日志记录基本上就是收集与程序运行有关的数据,这样可以在随后进行检查或者累计数据. 1.简单示例 在Pyt ...
- 实例学习SSIS(四)--使用日志记录和错误流重定向
原文:实例学习SSIS(四)--使用日志记录和错误流重定向 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习 ...
- python日志记录-logging模块
1.logging模块日志级别 使用logging模块简单示例: >>>import logging >>>logging.debug("this's a ...
- Python日志记录
官方文档:https://docs.python.org/2/library/logging.html logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为, ...
- [蟒蛇菜谱]Python日志记录最佳实践
# -*- coding: utf8 -*- import logging # 创建一个logger logger = logging.getLogger('mylogger') logger.set ...
- Python日志记录(logging)
import logging logfile = 'e:\\a.txt' # logging.basicConfig(filename=logfile,level=logging.INFO) # lo ...
- python学习笔记五 模块下(基础篇)
shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb" ...
- python学习笔记六 面向对象相关下(基础篇)
面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以将多函数中公用的变量封装到对象中) 对象,根据模板创建的 ...
- Python学习笔记整理总结【语言基础篇】
一.变量赋值及命名规则① 声明一个变量及赋值 #!/usr/bin/env python # -*- coding:utf-8 -*- # _author_soloLi name1="sol ...
随机推荐
- BLE CC2541 串口BootLoader 即 SBL BootLoader 资料 收集
1.[CC254X_Bootloader]SBL(串口Bootloader)使用说明 2.CC2540协议栈高速串口通信解决(UART的DMA方式) 3.[BLE]CC2541之SBL 4.[BLE] ...
- Gradle Goodness: Renaming Files while Copying
With the Gradle copy task we can define renaming rules for the files that are copied. We use the ren ...
- OpenID Connect Core 1.0(六)使用隐式验证流
3.2 使用隐式验证流(Authentication using the Implicit Flow) 本节描述如何使用隐式流程执行验证.使用隐式流程时,所有令牌从授权终结点返回:不使用令牌终结点返回 ...
- JDBC—执行sql语句的通用方法
/* * 执行 sql的方法集 * delete,insert into ,update */ public static void update(String sql){ Connection co ...
- Oracle数据库sql语句
1.创建用户.赋权限.删除用户 create user test identified by test default test users temporary tablespace temp; gr ...
- iOS:Masonry约束经验(19-03-21更)
1.label约束: 1).只需约束x.y 点相关就行.宽高 长度相关不用约束,就算用boundingRectWithSize计算出来的,也可能不准. 如:top.bottom二选一,trailing ...
- react-router里使用history
import React, { Component } from 'react';import {Router, Route, Switch} from 'react-router-dom';impo ...
- C++_类和对象
类和对象 OOP第二课 1 类的构成 1.1 从结构到类 1.2 类的构成 2 成员函数的声明 2.1 普通成员函数形式 2.2 将成员函数以内联函数的形式进行说明 3 对象的定义和使用 3.1 对象 ...
- centos7 安装mysql5.7以及一些细节问题
突然发现我的新服务器上没有mysql,所以想安装一个,上次在我的window电脑上安装MySQL8.0我真的要气死了,和5.7修改密码的方式不一样,弄了很久,所以我决定还是不用安装8.0了,5.7就可 ...
- 安装ubuntu 18.04总结
今天开发组的一个妹子同事想把系统换成ubuntu的,过来找我,给装完后,做个总结..... 以下开始操作 环境:小米air ,系统win10,cpu intel_m3 一)下载ubuntu 的镜像 h ...