| import os | |
| import sys | |
| class Logger(object): | |
| def __init__(self, fpath): | |
| self.console = sys.stdout | |
| self.file = open(fpath, "w") | |
| def __del__(self): | |
| self.close() | |
| def __enter__(self): | |
| pass | |
| def __exit__(self, *args): | |
| self.close() | |
| def write(self, msg): | |
| self.console.write(msg) | |
| if self.file is not None: | |
| self.file.write(msg) | |
| else: | |
| self.console.write("Warning: Log file is None") | |
| def flush(self): | |
| self.console.flush() | |
| if self.file is not None: | |
| self.file.flush() | |
| os.fsync(self.file.fileno()) | |
| else: | |
| self.console.write("Warning: Log file is None") | |
| def close(self): | |
| self.console.close() | |
| if self.file is not None: | |
| self.file.close() | |