File size: 1,548 Bytes
829e08b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import logging
import time
import os


class Verbose:
    mute = False


def print_log(s, logger=None, level='info'):
    if Verbose.mute:
        return None

    if logger is None:
        logger = logging.getLogger('trainer')
    if level == 'info':
        print_info(s)
        logger.info(s)
    elif level == 'warning':
        print_warning(s)
        logger.warning(s)
    elif level == 'error':
        print_error(s)
        logger.error(s)
    else:
        raise NotImplementedError


def create_logger(log_dir, name='trainer'):
    assert os.path.exists(log_dir), 'log_dir {} does not exist.'
    logger = logging.getLogger(name)
    file_path = log_dir / '{}.log'.format(name)
    hdlr = logging.FileHandler(file_path)
    formatter = logging.Formatter('[%(asctime)s] %(levelname)s: %(message)s')
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr)
    logger.setLevel(logging.INFO)
    return logger


class TerminalColors:
    HEADER = '\033[95m'
    OKBLUE = '\033[94m'
    OKGREEN = '\033[92m'
    WARNING = '\033[93m'
    FAIL = '\033[91m'
    ENDC = '\033[0m'
    BOLD = '\033[1m'
    UNDERLINE = '\033[4m'


def get_time():
    return time.strftime('%Y-%m-%d %H:%M:%S')


def print_info(s):
    print(TerminalColors.OKBLUE + '[' + get_time() + '] ' + str(s) + TerminalColors.ENDC)


def print_warning(s):
    print(TerminalColors.WARNING + '[' + get_time() + '] WARN ' + str(s) + TerminalColors.ENDC)


def print_error(s):
    print(TerminalColors.FAIL + '[' + get_time() + '] ERROR ' + str(s) + TerminalColors.ENDC)