+ TODO: formatters
+ WARN: Currently, the module changes fd's 1 and 2, this is a global change.
+ """
+ def __init__(self):
+ "Initialize loggers as described in class description."
+ Logger.__init__(self, '')
+ # Duplicate the fd's
+ self.orig_stdout_fd = os.dup(1)
+ self.orig_stdout_file = os.fdopen(self.orig_stdout_fd, 'w', 0)
+ self.orig_stderr_fd = os.dup(2)
+ self.orig_stderr_file = os.fdopen(self.orig_stderr_fd, 'w', 0)
+ # Eval main logger
+ self.eval = Logger('eval')
+ self.eval.addHandler(StreamHandler(self.orig_stderr_file))
+ # per-test logger
+ self.test = Logger('test')
+ self.test_handler = None
+ self.test_file = None
+ # user progress logger
+ self.user = Logger('user')
+ self.eval.addHandler(StreamHandler(self.orig_stdout_file))
+
+ self.addHandler(self.test)
+ self.addHandler(self.eval)
+ self.debug('Logging initialized.')