类位于核心 包,它可将日志记录输出发送到数据流例如 sys.stdout, sys.stderr 或任何文件类对象(或者更精确地说,任何支持 write() 和 flush() 方法的对象
类位于核心 包,它可将日志记录输出到磁盘文件中。 它从 继承了输出功能。
我们需要通过调用 类(以下称为 loggers , 记录器)的实例来执行日志记录。
对象有三个常见的方法:
指定记录器将处理的最低严重性日志消息,其中 debug 是最低内置严重性级别, critical 是最高内置严重性级别。 例如,如果严重性级别为 INFO ,则记录器将仅处理 INFO 、 WARNING 、 ERROR 和 CRITICAL 消息,并将忽略 DEBUG 消息。
和 从记录器对象中添加和删除处理程序对象。处理程序在以下内容中有更详细的介绍 。
和 可以添加或移除记录器对象中的过滤器。 包含更多的过滤器细节。
下面示例采用添加日志记录器对象输出和上面一样在控制台打印
import logging logger = logging.getLogger(__name__) logger.setLevel(level=logging.INFO) handler = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(lineno)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logger.info('This is a log info') logger.debug('Debugging') logger.warning('Warning exists') logger.info('Finish')当然也同样能保存到文件,为了演示修改了文件名称为put.log
import logging logger = logging.getLogger(__name__) logger.setLevel(level=logging.INFO) handler = logging.FileHandler('put.log') formatter = logging.Formatter('%(asctime)s - %(lineno)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logger.info('This is a log info') logger.debug('Debugging') logger.warning('Warning exists') logger.info('Finish') 日志双向输出既然之前的方案已经能达到相同的效果了,那么后面的方法到底有什么强大之处。我们来实现一个之前方法所不能达成的效果。