Python:日志模块logging的应用

通常,在商用软件中均会有完整的日志机制,之前使用C语言实现过一个《简单的分级别写日志程序》见 ,具有以下功能和不足:

[cpp]

/************************************************************************/       * 摘    要:此文件实现了普通WINDOWS程序中的日志功能      *           主要有以下特点:      *           1. 根据日期创建日志文件目录,每天的日志分别存放在不同的日志目录中;      *           2. 日志内容分三种类型,根据不同需要,写不同的日志类型的日志文件,      *              方便通过日志定位、分析问题;      *           3. 函数经过比较好的封装,便于复用;      *           待改进点:      *           1. 为了方便,日志内容打印时使用了time函数,其精确度较低;      *           2. 可将这些函数封装为一个日志类,或者动态库,使其更通用;      *           3. 没有考虑跨平台情景,目前只使用于WINDOWS下      *           4. 日志文件内容还可进一步改进,比如打印出当前文件名与行号,使用日志功能      *              更加实用;      *      * 当前版本:1.0      * 作    者:duanyongxing       * 完成日期:2009年10月11日                                                                     /************************************************************************/   

Python中,上面以实现的和已经实现的,均可以使用logging模块迅速搞定,且仅仅只需要一个配置文件,两行代码,实现过程如下(仅以输出的磁盘文件为例,命令输出只需要修改配置文件即可,具体可查API手册):

1. 定义配置文件logging.conf:

[plain]

[loggers]   keys=root,applog   [handlers]   keys=rotateFileHandler   [formatters]   keys=applog_format      [formatter_applog_format]   format=[%(asctime)s - %(name)s]%(levelname)s:  %(message)s - %(filename)s:%(lineno)d      [logger_root]   level=NOTSET   handlers=rotateFileHandler      [logger_applog]   level=NOTSET   handlers=rotateFileHandler   qualname=simple_example      [handler_rotateFileHandler]   class=handlers.RotatingFileHandler   level=NOTSET   formatter=applog_format   args=('log_1.log', 'a', 10000, 9)  

注意前三个[ ]中的keys,这个在后面各[ ]中定义定义,section的取名格式如looger_自定义名称, handler_自定义名称,我偷懒直接使用了标准名称,其他一样,最后一个要注意的就是format,即日志文件中内容的格式,具体见后面附一。level参数是日志级别,可扩展,如果使用python自己的,有以下四个级别:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wyzjjf.html