0
私はプログラムをログに記録するためにPythonログを使用しています。すべてのログは現在stdoutに出力されていますが、POST REST呼び出しを使用してリモートログサーバーに送信する必要があります。現在、私のプログラムはロギングのために複数のPOST要求を行います。単一のPOST要求で複数のログをバンドルできるログを送信する最適化された方法はありますか?リモートログ用のPythonログの使用
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)
一般的に、1回のリクエスト(バッチログなど)で複数のログリクエストをバンドルすると、実際の画像が記録されないことがあります。バッチが失敗した場合、ログを回復するのは難しいかもしれません。アプリケーションのパフォーマンスに影響を与えないように、非同期でリクエストを忘れることがあります。あなたの状況によって異なります。 –