标签:
日志是跟踪软件运行时发生的事件,软件的开发人员可以通过日志快速的定位问题的位置.事件也分重要性即事件的严重程度.
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!
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)
如果你的程序有多个模块组成,可以通过以下方式写入到一个日志文件中.
# 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
可以通过格式化字符串的方式来格式化记录日志.
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) 高级教程.
标签:
原文地址:http://www.cnblogs.com/mydevops/p/4300991.html