-
Notifications
You must be signed in to change notification settings - Fork 2
/
logger.py
60 lines (49 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
import logging
import os
import re
import sys
from logging.handlers import RotatingFileHandler
class Logger:
# log files location
__LOG_DIRECTORY = 'log'
__DEBUG_LOG_FILENAME = __LOG_DIRECTORY + '/xmltvparser_debug.log'
__WARNING_LOG_FILENAME = __LOG_DIRECTORY + '/xmltvparser.log'
# log formatter
__formatter = logging.Formatter('#%(levelname)-8s [%(asctime)s] (%(process)d) %(module)s: %(message)s')
def __init__(self, d_e_b_u_g=False):
# create log dir if not exists
if not os.path.exists(self.__LOG_DIRECTORY):
os.makedirs(self.__LOG_DIRECTORY)
# log warnings to warning log file
self.__rfh = RotatingFileHandler(self.__WARNING_LOG_FILENAME, maxBytes=1048576,
backupCount=5)
self.__rfh.setLevel(logging.INFO)
self.__rfh.setFormatter(self.__formatter)
# setting up logger with handlers
self.mylogger = logging.getLogger('XmlTvParserLogger')
self.mylogger.setLevel(logging.DEBUG)
self.mylogger.addHandler(self.__rfh)
if d_e_b_u_g:
# log debug info to console
self.__sh = logging.StreamHandler(sys.stdout)
self.__sh.setLevel(logging.DEBUG)
self.__sh.setFormatter(self.__formatter)
# log debug info to debug log file
self.__rfh2 = RotatingFileHandler(self.__DEBUG_LOG_FILENAME, maxBytes=1048576,
backupCount=5)
self.__rfh2.setLevel(logging.DEBUG)
self.__rfh2.setFormatter(self.__formatter)
self.mylogger.addHandler(self.__sh)
self.mylogger.addHandler(self.__rfh2)
else:
pattern = 'xmltvparser_debug*'
for f in os.listdir(self.__LOG_DIRECTORY):
if re.search(pattern, f):
os.remove(os.path.join(self.__LOG_DIRECTORY, f))
# logger object and logging functions shortcut
logger = Logger()
debug = logger.mylogger.debug
info = logger.mylogger.info
warning = logger.mylogger.warning
error = logger.mylogger.error
critical = logger.mylogger.critical