]> mj.ucw.cz Git - eval.git/blobdiff - t/moe/log.py
Renamed conf -> config, refactoring inside config
[eval.git] / t / moe / log.py
index 0695b79dbad43d967a39f88aba96812c1cc81a6b..592fb846b047bd7b1952c3e6866080aa1074b67d 100644 (file)
@@ -1,14 +1,25 @@
 #!/usr/bin/env python
 
 import sys
+import os
+import traceback
+
+orig_stdout_fd = os.dup(1)
+orig_stderr_fd = os.dup(2)
+progress_file = os.fdopen(orig_stdout_fd, "w", 0)
 
 class MoeLog:
 
     def __init__(self):
        self.verbosity = 0
-       self.progress_file = sys.stdout
+       self.progress_file = progress_file
        self.log_file = None
 
+    def open(self, name):
+       self.log_file = open(name, "w")
+       os.dup2(self.log_file.fileno(), 1)
+       os.dup2(self.log_file.fileno(), 2)
+
     def say(self, msg):
        if self.log_file:
            self.log_file.write(msg)
@@ -18,7 +29,19 @@ class MoeLog:
            self.log_file.write(msg)
 
     def progress(self, msg):
-       if self.progress:
-           self.progress.write(msg)
+       if self.progress_file:
+           self.progress_file.write(msg)
+
+    def shout(self, msg):
+       self.say(msg)
+       self.progress(msg)
+
+    def flush(self):
+       self.log_file.flush()
 
 default = MoeLog()
+
+def fatal_exception():
+    os.dup2(orig_stderr_fd, 2)
+    traceback.print_exc()
+    sys.exit(1)