用tornado搭建日志服务器
对于一个分布式应用,一个计算节点上可能产生一些日志,而为了便于将这些节点日志收集并分析,我们可以选择除了在本地生成日志外,还将某些级别的日志发送到日志服务器。
Python的logging模块可以用来对日志进行一些操作,其接口和著名的Java日志库log4j类似。logging.handlers支持一系列的日志处理方式,其中发送到日志服务器可以通过SocketHandler或者HttpHandler,不过本文既然选择了tornado,还是使用HttpHandler的方式。
首先,是分布式节点的部分。首先,我们通过get_logger方法得到logger对象,并向其添加HttpHandler。
import logging logging_host = '127.0.0.1' logging_port = 8888 logging_add_url = '/log/add/' def get_logger(): logger = logging.getLogger() http_handler = logging.handlers.HTTPHandler( '%s:%s' % (logging_host, logging_port), logging_add_url, method='POST' ) http_handler.setLevel(logging.ERROR) logger.addHandler(http_handler) return logger
代码还是很简单的,HTTPHandler接受三个参数,一个是服务器的host,日志发送到的url,以及是GET还是POST方式。这里,省去了添加本地日志的过程。