码迷,mamicode.com
首页 > 编程语言 > 详细

Python 日志工具(logging) 基础教程

时间:2015-02-26 17:58:26      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:

什么是 logging ?

日志是跟踪软件运行时发生的事件,软件的开发人员可以通过日志快速的定位问题的位置.事件也分重要性即事件的严重程度.

什么时候使用日志?

logging 提供了一组方便操作日志记录的功能,这些是 debug(), info(),warning(),error(),critical().

通过想要执行的任务确定使用日志记录的方法.

你想要执行的任务 日志记录的最佳方法
一个脚本或程序显示在终端上 print()
程序正常运行过程中发生的事件 logging.info() or logging.debug()
特定事件的报警 logging.warning()
特定事件的错误 raise
报告一个错误而不引发异常 logging.error() or logging.critical()

级别列表(递增顺序)

级别 使用场景
DEBUG 详细信息,通常用于程序排错
INFO 通常用于通知程序发生的事件
WARNING 报告非正常事件,但软件仍然正常运行
ERROR 更严重的问题,软件不能运行某个功能
CRITICAL 严重错误,软件本身不能运行

日志默认级别为 WARNING,可以理解为大于 WARNING 的都记录,小于 WARNING 的都不记录,当然也可以自定义日志配置方案.

被跟踪的事件有不同的方式来处理,最简单的方式是输出到控制台,另外一种最常见的是写入文件中.

实例

import logging
logging.warning(‘Watch out!‘) # 将一条消息打印到控制台
logging.info(‘I told you so‘) # 不会打印任何东西

 执行结果

WARNING:root:Watch out!

logging 记录到文件中

import logging
logging.basicConfig(filename=‘example.log‘,level=logging.DEBUG)
logging.debug(‘This message should go to the log file‘)
logging.info(‘So should this‘)
logging.warning(‘And this, too‘)

 查看 example.log 文件中的内容.

DEBUG:root:This message should go to the log file
INFO:root:So should this
WARNING:root:And this, too

如果我们多运行几次上述程序,会发现 example.log 文件中的内容是追加的,如果不想追加可以使用 filemode 参数来改变.

logging.basicConfig(filename=‘example.log‘, filemode=‘w‘, level=logging.DEBUG)

多个模块 logging 记录到文件

如果你的程序有多个模块组成,可以通过以下方式写入到一个日志文件中.

# myapp.py
import logging
import mylib

def main():
    logging.basicConfig(filename=‘myapp.log‘, level=logging.INFO)
    logging.info(‘Started‘)
    mylib.do_something()
    logging.info(‘Finished‘)

if __name__ == ‘__main__‘:
    main()
# mylib.py
import logging

def do_something():
    logging.info(‘Doing something‘)

 运行 myspp.py 后查看 myapp.log 文件

INFO:root:Started
INFO:root:Doing something
INFO:root:Finished

logging 格式化日志记录

可以通过格式化字符串的方式来格式化记录日志.

import logging
logging.warning(‘%s before you %s‘, ‘Look‘, ‘leap!‘)

运行结果

WARNING:root:Look before you leap!

更改显示信息的格式

要改变默认的显示格式,那么你必须指定你想要的显示格式.

import logging
logging.basicConfig(format=‘%(levelname)s:%(message)s‘, level=logging.DEBUG)
logging.debug(‘This message should appear on the console‘)
logging.info(‘So should this‘)
logging.warning(‘And this, too‘)

执行结果

DEBUG:This message should appear on the console
INFO:So should this
WARNING:And this, too

显示日期和时间

要显示日期和时间,可以使用 %(asctime)s 参数.

import logging
logging.basicConfig(format=‘%(asctime)s %(message)s‘)
logging.warning(‘is when this event was logged.‘)

执行结果

2015-01-12 11:41:42,612 is when this event was logged.

日期显示格式默认为 ISO8601 ,如果你想自定义日期和时间格式可以使用 datefmt 参数.

import logging
logging.basicConfig(format=‘%(asctime)s %(message)s‘, datefmt=‘%Y-%m-%d %I:%M:%S %p‘)
logging.warning(‘is when this event was logged.‘)

执行结果

2015-02-26 03:58:44 PM is when this event was logged.

到目前为止,简单的日志录入没有问题,如果想要更深入了解 logging 的用法请参考 Python 日志工具(logging) 高级教程.

Python 日志工具(logging) 基础教程

标签:

原文地址:http://www.cnblogs.com/mydevops/p/4300991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!