/
irchandler.py
68 lines (55 loc) · 1.97 KB
/
irchandler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# irchandler.py
import logging
import logging.handlers
from datetime import datetime
# Third party
import Pyro.core
from django.core.management import setup_environ
from robotics_logger import settings
setup_environ(settings)
# Local
from storage.models import Message, Test
class RoboticsHandler(logging.Handler): # Inherit from logging.Handler
def log(self, msg):
elapsed = (datetime.now() - self.start).total_seconds()
ts = "%06.2f" % elapsed
if self.use_irc:
self.irc.send("(%s) %s" % (ts, msg))
m = Message()
m.runtime = elapsed
m.message = msg
m.save()
def __init__(self, use_irc):
# run the regular Handler __init__
logging.Handler.__init__(self)
print use_irc
self.use_irc = use_irc
if self.use_irc:
# you have to change the URI below to match your own host/port.
self.irc = Pyro.core.getProxyForURI("PYROLOC://localhost:7766/sendmsg")
# timing info
self.start = datetime.now()
# send startup message
from __main__ import __file__ as mainfn
self.log("Starting %s..." % mainfn)
self.test = Test()
self.test.filename = mainfn
self.test.start = self.start
self.test.status = "AB"
self.test.save()
def emit(self, record):
# record.message is the log message
print "emitting %s" % record.message
self.log(record.message)
def init_logger(use_irc=True):
#LOG_FILENAME = "log.txt"
# Create a logging object (after configuring logging)
#logging.basicConfig(filename=LOG_FILENAME,level=logging.DEBUG)
logger = logging.getLogger()
logging.handlers.RoboticsHandler = RoboticsHandler
# create the handler object
testHandler = logging.handlers.RoboticsHandler(use_irc)
testHandler.setLevel(logging.INFO)
# and finally we add the handler to the logging object
logger.addHandler(testHandler)
return logger