App EngineのLogをXMPPで飛ばす (Python版)
GAEのログをXMPPで送るという素晴らしいアイデアを書かれてたので、pythonに移植してみました。
http://d.hatena.ne.jp/hidemon/20091211/1260512565
loggerのXMPP用のhandler
# -*- codign: utf-8 -*- import logging from google.appengine.api import xmpp class XMPPHandler(logging.Handler): def __init__(self, level=logging.NOTSET, notifyto=None): if not notifyto: raise AttributeError('notifyto attribute must be set') self.notifyto = notifyto logging.Handler.__init__(self, level) def emit(self, record): if xmpp.get_presence(self.notifyto): message = self.format(record) status_code = xmpp.send_message(self.notifyto, message) is_message_sent = (status_code != xmpp.NO_ERROR) if not is_message_sent: print "oops"
使う側
あらかじめ、app名@appspot.comの名前をGTalkで招待しておきます。あとは、loggerにhandler設定してlogger.infoなどでログを出力すれば、GTalkにログが送信されます。
def xmpp_logger(clazz, notifyto) : handler = XMPPHandler(notifyto=notifyto) log = logging.getLogger(clazz) log.addHandler(handler) log.setLevel(logging.DEBUG) return log
logger = xmpp_logger('xxx', 'xx@gmail.com') logger.warn('aaa');