-
Notifications
You must be signed in to change notification settings - Fork 3
/
Logger.py
67 lines (53 loc) · 2.11 KB
/
Logger.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import Config as cfg
from tabulate import tabulate
from time import gmtime, strftime
import datetime
import sys
import os
import numpy as np
class Logger:
def __init__(self):
self.path = None
self.log = None
self.terminal = sys.stdout
def write(self, msg, date=True, terminal=True, log_file=True):
if date:
curr_time = strftime("%Y-%m-%d_%H-%M-%S", gmtime())
msg = '[{}] {}'.format(curr_time, msg)
msg = msg + '\n'
if terminal:
self.terminal.write(msg)
self.terminal.flush()
if log_file and self.log is not None:
self.log.write(msg)
def write_title(self, msg, terminal=True, log_file=True, pad_width=40, pad_symbol='-'):
self.write('', date=False)
self.write(''.center(pad_width, pad_symbol), terminal=terminal, log_file=log_file, date=False)
self.write(' {} '.format(msg).center(pad_width, pad_symbol), terminal=terminal, log_file=log_file, date=False)
self.write(''.center(pad_width, pad_symbol), terminal=terminal, log_file=log_file, date=False)
self.write('', date=False)
def start_new_log(self, path=None, name=None, no_logfile=False):
self._create_log_dir(path, name)
if no_logfile:
self.close_log()
else:
self._update_log_file()
def close_log(self):
if self.log is not None:
self.log.close()
self.log = None
return self.path
def _update_log_file(self):
self.close_log()
self.log = open("{}/logfile.log".format(self.path), "a")
def _create_log_dir(self, path=None, name=None):
if path is None:
dir_name = ''
if name is not None:
dir_name = dir_name + name + '_'
dir_name = dir_name + '{date:%Y-%m-%d_%H-%M-%S}'.format(date=datetime.datetime.now())
self.path = '{}/{}'.format(cfg.RESULTS_DIR, dir_name)
else:
self.path = path
os.mkdir('{}'.format(self.path))
self.write("New results directory created @ {}".format(self.path), log_file=False)