[英]Using python logging for remote logs
我正在使用python日志记录程序。 所有日志当前都打印在stdout上,但我希望使用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")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.