+++ /dev/null
-import logging, logging.handlers, syslog, os
-
-# logging function
-class Logger:
- def __init__ (self):
- import __main__ as main
- self.name = os.path.basename(main.__file__)
- self.logger = logging.getLogger(self.name)
- self.logger.setLevel(logging.INFO)
- self.handler = logging.handlers.SysLogHandler(address = '/dev/log', facility = logging.handlers.SysLogHandler.LOG_LOCAL0)
- self.logger.addHandler(self.handler)
- def log (self, what):
- thestr = "%s[%d]: %s" % (self.name,os.getpid(),what)
- print (thestr)
- self.logger.info(thestr)
-
-logger = Logger()
-
-def log (what):
- logger.log(what)
-
-
-# Threaded callback class
-class ThreadFunction():
- _CALL = 0
- _TERM = 1
-
- def __init__(self, f):
- self._f = f
- self._q = queue.Queue()
- self._t = threading.Thread(target=self._thread_func)
- self._t.start()
-
- def _thread_func(self):
- while True:
- (cmd, data) = self._q.get()
- # run command
- if cmd == _CALL:
- self._f(*data)
- elif cmd == _TERM:
- assert data is None
- break
- else:
- raise NotImplementedError("Command %d does not exist" % cmd)
-
- def __call__(self, *arg):
- self._q.put((self._CALL, arg))
-
- def stop(self):
- self._q.put((_TERM, None))
- self._t.join()