对远程日志使用 python 日志记录



我正在使用python日志记录来记录我的程序。所有日志当前都打印在标准输出上,但我希望使用 POST REST 调用将它们发送到远程日志服务器。目前,我的程序发出多个 POST 请求进行日志记录。有没有更优化的方法来发送日志,我可以在单个 POST 请求中捆绑多个日志?

import logging.handlers
class SumoHTTPHandler(logging.Handler):
    def __init__(self, url, host="collectors.sumologic.com", name=None, compressed=False):
    """
    Similar to HTTPHandler but with some custom Sumo-friendly headers
    """
        logging.Handler.__init__(self)
        self.host = host
        self.url = url
        self.name = name
    def emit(self, record):
        # this is called multiple times. 
        try:
            host = self.host
            h = httplib.HTTPS(host)
            url = self.url
            data = urllib.quote(self.format(record))
            sep = "?"
            url = url + "%c%s" % (sep, data)
            h.putrequest("GET", url)
            h.putheader("Host", host)
        except (KeyboardInterrupt, SystemExit):
            raise
        except:
            self.handleError(record)

不确定是否需要重新实现并创建自己的类。python中的日志记录模块有一个HTTPHandler,在远程日志记录中非常有用。下面是如何执行此操作的示例

import logging
import logging.handlers
logger = logging.getLogger('Synchronous Logging')
http_handler = logging.handlers.HTTPHandler(
    '127.0.0.1:3000',
    '/log',
    method='POST',
)
logger.addHandler(http_handler)
# Log messages:
logger.warn('Hey log a warning')
logger.error("Hey log a error")

最新更新