Python 学习日知录(二)- 日志
来源:互联网 发布:青山水利软件价格 编辑:程序博客网 时间:2024/06/11 23:55
Python 学习日知录(二)- 日志
一直在用python进行FPGA网络调试,也就是通过udp包读写FPGA的一些内部寄存器和外设什么的。最近想对这个简单脚本进行改造,打造一个更称手的工具。
暂时想法如下:
1. 记录调试过程(logging);
2. 录制脚本,载入运行脚本(保存成json格式);
3. 打开时恢复上一次的运行环境;
4. 命令行就可以了;
python 2.7内置的logging模块,记录调试过程基本够用。这两天就学习了这个模块的基本用法,总结如下:
1. 基本用法
既然是日志,时间戳必不可少。因此直接上带时间戳的代码:
# -*- coding:utf8 -*-import loggingimport logging.handlersdef ini_logging(log_file_name): ''' 初始化logging系统 :param log_file_name: 日志文件 :return: ''' logger = logging.getLogger() logger.setLevel(logging.DEBUG) rh = logging.handlers.TimedRotatingFileHandler(log_file_name, 'D') fm = logging.Formatter("%(asctime)s %(levelname)s - %(message)s", "%Y-%m-%d %H:%M:%S") rh.setFormatter(fm) logger.addHandler(rh)def write_reg(addr, value): # 写寄存器 logging.info('write reg %02x : %02x' % (addr, value))def read_reg(addr, len): # 读寄存器 ret = 128 # 假设的返回值,实际从网络获取 logging.info('read reg %02x : %02x' % (addr, ret))if __name__ == '__main__': ini_logging('testlog.log') logging.info('Start') write_reg(100, 16) read_reg(100,1) logging.info('End')
运行该脚本,获得的日志文件如下:
2017-06-20 23:44:33 INFO - Start2017-06-20 23:44:33 INFO - write reg 64 : 102017-06-20 23:44:33 INFO - read reg 64 addr : 802017-06-20 23:44:33 INFO - End
2. 一些有用的东西
2.1 日志等级
日志一共分成5个等级,从低到高分别是:
DEBUG
INFO
WARNING
ERROR
CRITICAL
分别对应五种方法:
class Logger: def debug(self, msg, *args, **kwargs): ... def info(self, msg, *args, **kwargs): ... def warn(self, msg, *args, **kwargs): ... def error(self, msg, *args, **kwargs): ... def critical(self, msg, *args, **kwargs): ...
在logger.setLevel(logging.DEBUG)
中,可以指定打印的最低级别。
2.2 打印格式
在fm = logging.Formatter()
中设置。格式如下:
"%(asctime)s %(levelname)s - %(message)s", "%Y-%m-%d %H:%M:%S"
预定义的内容如下:
参考文献:
1. python 日志模块 logging 详解
2. 够用的 Python 写日志的知识——标准日志模块logging简介
3. PEP 282 – A Logging System
阅读全文
0 0
- Python 学习日知录(二)- 日志
- Python学习日志(二)
- python的学习日志<二>
- Python学习日志之二-----装饰器
- JBPM学习日志(二)
- Java学习日志(二)
- java学习日志(二)
- 代理服务器学习日志(二)
- Docker 学习日志 (二)
- java学习日志(二)
- vue学习日志(二)
- openCV学习日志(二)
- Redis学习日志(二)
- python学习日志(一)
- python 学习日志(2)
- python学习日志(一)
- Python学习日志(八)
- Python学习 (二)
- 桥接模式与装饰模式的对比
- java 原生态CRUD高级封装
- 从0开始学git 第6节:给git目录的文件建立快照
- Java常用类
- 快速排序法
- Python 学习日知录(二)- 日志
- 获取ip地址
- 代码规范
- 整型int和字节数组byte相互转换
- 【SEO与页面设置细节】
- HTML&CSS快速入门(二)
- express中创建ejs项目以及引用ejs模板引擎
- 阿里巴巴开源项目nginx_concat_module部署实例
- python 贝叶斯分类