import threading, logging, signal, time, os def sighandler(self, sig, frame): self.logger.log(logging.INFO, "handling signal %s" % sig) class MyThread(threading.Thread): def __init__(self, port=8000): threading.Thread.__init__(self) self.logger = logging.getLogger("mylogger") self.logger.info("initializing MyThread") self.running = True def run(self): self.logger.info("MyThread starting") while self.running: print "tick" self.logger.info("MyThread ticking...") time.sleep(2) def stop(self): self.logger.info("MyServer stopping") self.running = False if __name__ == '__main__': # set up logging to screen... logger = logging.getLogger('mylogger') screenhandler = logging.StreamHandler() screenhandler.setLevel(logging.INFO) logger.addHandler(screenhandler) # ...and to file logfile = "/tmp/testlog" if os.path.isfile(logfile): os.remove(logfile) handler = logging.FileHandler(logfile) formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s') handler.setFormatter(formatter) logger.addHandler(handler) logger.setLevel(logging.INFO) logger.info("logging initialized") # now start the thread, and see if it can use the logger signal.signal(signal.SIGINT, signal.SIG_DFL) signal.signal(signal.SIGTERM, signal.SIG_DFL) mythread = MyThread() logger.info("test (before starting thread)") mythread.start() logger.info("test (after starting thread)")