Python logging模块
logging模块为我们提供了通用的日志系统,我们可以选择使用不同的日志级别,并且可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,或者我们也可以实现自己的日志记录方式,下面参考Logging facility for python对logging模块进行简要说明。
该模块提供了四个基础类:Logger、Handler、Filter、Formatter。
1)Loggers expose the interface that application code directly uses;
2)Handlers sed the log records (created by loggers) to the appropriate destination;
3)Filters provide a finer grained facility for determining which log records to output;
4)Formatters specify the layout of log records in the final output.
通俗地说,logger提供了日志接口,供我们写的应用代码用;handler则将日志记录发送到合适的目的地,比如上面说的文件、HTTP GET/POST等;filter决定一个日志记录是否发送到handler;formatter指定日志记录输出的具体格式。
下面我们通过几个小例子来学习一下logging模块的简单用法。
例一:
import logging
logging.warning("Watch out! This is the warning string.")
logging.info("Today is Nov 6.")
运行结果:
可见,仅仅在console中输出了warning级别的消息,因为默认的level是WARNING。
我们如何将日志记录到文件中呢?
import logging
logging.basicConfig(filename='example.log',level=logging.DEBUG)
logging.debug('This is the debug message.')
logging.info('This is the info message.')
logging.warning('This is the warning message.')
运行上面的代码之后,将会在.py文件的同一个文件夹下生成example.log文件,且文件中记录了:
我们的代码将会对文件'example.log'进行持续写入,并不会覆盖文件中本身有的内容,而是接着继续往下进行写入。
如果我们想要在每次运行这段代码时,都会清空原有记录,重新对文件进行写入,则改为下面的语句:
logging.basicConfig(filename='example.log',filemode='w',level=logging.DEBUG)