aboutsummaryrefslogtreecommitdiff
path: root/utils/logger.py
diff options
context:
space:
mode:
Diffstat (limited to 'utils/logger.py')
-rw-r--r--utils/logger.py76
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()