00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 __facility__ = "Online"
00011 __abstract__ = "GLAST LAT Alert System GUI"
00012 __author__ = "J. Panetta"
00013 __date__ = "2005/07/23 00:08:27"
00014 __updated__ = "$Date: 2005/09/22 00:29:30 $"
00015 __version__ = "$Revision: 1.4 $"
00016 __release__ = "$Name: HEAD $"
00017 __credits__ = "SLAC"
00018
00019 import LICOS.copyright_SLAC
00020 import logging
00021 import logging.handlers
00022 import sys
00023 ALARM_TCP_LOGGING_PORT = 9099
00024
00025 class MyLogSocketHandler(logging.handlers.SocketHandler):
00026 """!\brief Socket log handler for alerts
00027
00028 """
00029 def __init__(self, *args):
00030 """!\brief MyLogSocketHandler constructor
00031
00032 \param *args Arguments to MyLogSocketHandler constructor
00033 """
00034 apply(logging.handlers.SocketHandler.__init__, (self,) + args)
00035
00036 def handleError(self, record):
00037 """!\brief Error handler
00038
00039 \param record Log record
00040 """
00041 if self.closeOnError and self.sock:
00042 self.sock.shutdown(2)
00043 self.sock.close()
00044 self.sock = None
00045 else:
00046 raise IOError, sys.exc_info()[1]
00047
00048 def createSocket(self):
00049 """!\brief createSocket
00050
00051 Override base classes createSocket method.
00052 This isn't allowed to fail silently
00053 """
00054 self.sock = self.makeSocket()
00055
00056 def socketLogging(logHost, logLevel, port=ALARM_TCP_LOGGING_PORT):
00057 """!\brief Setup logging for alerts.
00058
00059 \param logHost Log host
00060 \param logLevel Log level
00061 \param port TCP logging port
00062 """
00063 logging.root.setLevel(logging.__dict__[logLevel])
00064
00065
00066 sockHdlr = MyLogSocketHandler(logHost, port)
00067
00068 fmt = logging.Formatter("%(asctime)s %(filename)s:%(lineno)d %(levelname)-5s - %(message)s")
00069 sockHdlr.setFormatter(fmt)
00070 logging.getLogger().addHandler(sockHdlr)
00071
00072 try:
00073 logging.info('Trying to connect to the message logger')
00074 except Exception, e:
00075 logging.getLogger("").removeHandler(sockHdlr)
00076 logging.fatal("Can't connect to the message logger, Aborting job")
00077 raise
00078 else:
00079 logging.info('Successfully connected to the message logger')
00080