diff options
Diffstat (limited to 'utils/logger.py')
-rw-r--r-- | utils/logger.py | 76 |
1 files changed, 52 insertions, 24 deletions
diff --git a/utils/logger.py b/utils/logger.py index 1ef996eb..a8f0a6f0 100644 --- a/utils/logger.py +++ b/utils/logger.py @@ -56,13 +56,21 @@ class Logger(object): # self._AddSuffix(basename, suffix)) return suffix + def _CreateLogFileHandle(self, name): + fd = None + try: + fd = open(name, "w") + except IOError: + print "Warning: could not open %s for writing." % name + return fd + def _CreateLogFileHandles(self, basename): suffix = self._FindSuffix(basename) suffixed_basename = self._AddSuffix(basename, suffix) - self.cmdfd = open("%s.cmd" % suffixed_basename, "w", 0755) - self.stdout = open("%s.out" % suffixed_basename, "w") - self.stderr = open("%s.err" % suffixed_basename, "w") + self.cmdfd = self._CreateLogFileHandle("%s.cmd" % suffixed_basename) + self.stdout = self._CreateLogFileHandle("%s.out" % suffixed_basename) + self.stderr = self._CreateLogFileHandle("%s.err" % suffixed_basename) self._CreateLogFileSymlinks(basename, suffixed_basename) @@ -75,40 +83,58 @@ class Logger(object): if os.path.exists(dest_file): os.remove(dest_file) os.symlink(src_file, dest_file) - except IOError as ex: - self.LogFatal(str(ex)) + except Exception as ex: + print "Exception while creating symlinks: %s" % str(ex) def _WriteTo(self, fd, msg, flush): - fd.write(msg) - if flush: - fd.flush() + if fd: + fd.write(msg) + if flush: + fd.flush() def _LogMsg(self, file_fd, term_fd, msg, flush=True): - self._WriteTo(file_fd, msg, flush) + if file_fd: + self._WriteTo(file_fd, msg, flush) if self.print_console: self._WriteTo(term_fd, msg, flush) - def LogCmd(self, cmd, machine="", user=None): + def _GetStdout(self, print_to_console): + if print_to_console: + return sys.stdout + return None + + def _GetStderr(self, print_to_console): + if print_to_console: + return sys.stderr + return None + + def LogCmd(self, cmd, machine="", user=None, print_to_console=True): if user: host = "%s@%s" % (user, machine) else: host = machine - self._LogMsg(self.cmdfd, sys.stdout, "CMD (%s): %s\n" % (host, cmd)) + self._LogMsg(self.cmdfd, self._GetStdout(print_to_console), + "CMD (%s): %s\n" % (host, cmd)) - def LogFatal(self, msg): - self._LogMsg(self.stderr, sys.stderr, "FATAL: %s\n" % msg) - self._LogMsg(self.stderr, sys.stderr, "\n".join(traceback.format_stack())) + def LogFatal(self, msg, print_to_console=True): + self._LogMsg(self.stderr, self._GetStderr(print_to_console), + "FATAL: %s\n" % msg) + self._LogMsg(self.stderr, self._GetStderr(print_to_console), + "\n".join(traceback.format_stack())) sys.exit(1) - def LogError(self, msg): - self._LogMsg(self.stderr, sys.stderr, "ERROR: %s\n" % msg) + def LogError(self, msg, print_to_console=True): + self._LogMsg(self.stderr, self._GetStderr(print_to_console), + "ERROR: %s\n" % msg) - def LogWarning(self, msg): - self._LogMsg(self.stderr, sys.stderr, "WARNING: %s\n" % msg) + def LogWarning(self, msg, print_to_console=True): + self._LogMsg(self.stderr, self._GetStderr(print_to_console), + "WARNING: %s\n" % msg) - def LogOutput(self, msg): - self._LogMsg(self.stdout, sys.stdout, "OUTPUT: %s\n" % msg) + def LogOutput(self, msg, print_to_console=True): + self._LogMsg(self.stdout, self._GetStdout(print_to_console), + "OUTPUT: %s\n" % msg) def LogFatalIf(self, condition, msg): if condition: @@ -122,11 +148,13 @@ class Logger(object): if condition: self.LogWarning(msg) - def LogCommandOutput(self, msg): - self._LogMsg(self.stdout, sys.stdout, msg, flush=False) + def LogCommandOutput(self, msg, print_to_console=True): + self._LogMsg(self.stdout, self._GetStdout(print_to_console), + msg, flush=False) - def LogCommandError(self, msg): - self._LogMsg(self.stderr, sys.stderr, msg, flush=False) + def LogCommandError(self, msg, print_to_console=True): + self._LogMsg(self.stderr, self._GetStderr(print_to_console), + msg, flush=False) def Flush(self): self.cmdfd.flush() |