-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlog.py
More file actions
72 lines (62 loc) · 2.45 KB
/
log.py
File metadata and controls
72 lines (62 loc) · 2.45 KB
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
68
69
70
71
72
import datetime
import logging
import sys
from logging.handlers import TimedRotatingFileHandler
is_color_log_presented = True
try:
import colorlog
except ImportError:
is_color_log_presented = False
class Log:
def __init__(self, logfile_name):
self.log_file_formatter = logging.Formatter("%(asctime)s %(levelname)-8s | %(message)s")
self.log_file = logfile_name
self.log_level = logging.DEBUG
def get_console_handler(self):
"""
Print out log in the console
:return: console_handler
"""
console_handler = logging.StreamHandler(sys.stdout)
if is_color_log_presented:
log_stream_format = " %(log_color)s%(asctime)s %(levelname)-8s%(reset)s | %(log_color)s%(message)s%(reset)s"
# The available color names are 'black', 'red', 'green', 'yellow', 'blue', 'purple', 'cyan' and 'white'.
log_stream_formatter = colorlog.ColoredFormatter(
log_stream_format,
log_colors={
"DEBUG": "bold_cyan",
"INFO": "white",
"WARNING": "bold_yellow",
"ERROR": "red",
"CRITICAL": "bold_red",
},
)
console_handler.setFormatter(log_stream_formatter)
else:
console_handler.setFormatter(self.log_file_formatter)
return console_handler
def get_file_handler(self):
"""
Print out log in the file
:return: file_handler
"""
# Use RotatingFileHandler classes, such as the TimedRotatingFileHandler, instead of FileHandler, as it will
# rotate the file for you automatically when the file reaches a size limit or do it everyday.
file_handler = TimedRotatingFileHandler(
filename=datetime.datetime.now().strftime(self.log_file + "_%Y%m%d.log"),
when="midnight",
)
file_handler.setFormatter(self.log_file_formatter)
return file_handler
def get_logger(self, logger_name):
logger = logging.getLogger(logger_name)
logger.setLevel(self.log_level)
logger.addHandler(self.get_console_handler())
logger.addHandler(self.get_file_handler())
logger.propagate = False
return logger
# _log = logging.getLogger("pythonConfig")
# _log.setLevel(log_level)
# _log.addHandler(file_handler)
# _log.addHandler(stream)
# return _log