1 import logging
2 import logging.handlers
3 import os
4 import os.path as path
5
6
8 """
9 Logger class that prints its messages and keeps them also inside a logfile
10 """
11
12 - def __init__(self, logfile="./linspector.log", logLevel=logging.DEBUG, logfileLevel=logging.DEBUG):
13 """
14 initializes a new Logger object.
15
16 :param logLevel: the LoggingLevel from the console output (DEBUG default)
17 :param logfile: the file where to log. Logs are rotated by default.
18 :param logfileLevel: the LoggingLevel for the file Logger. (DEBUG default)
19 """
20
21 logfile = path.expanduser(logfile)
22 if not path.exists(path.dirname(logfile)):
23 os.makedirs(path.dirname(logfile))
24
25 self.log = logging.getLogger("LinspectorLogger")
26 self.log.setLevel(logging.DEBUG)
27
28 consoleHandler = logging.StreamHandler()
29 consoleHandler.setLevel(logLevel)
30
31 fileHandler = logging.handlers.RotatingFileHandler(logfile, maxBytes=1024000, backupCount=4)
32 fileHandler.setLevel(logfileLevel)
33
34 consoleFormatter = logging.Formatter('[%(levelname)s]: %(message)s')
35 fileFormatter = logging.Formatter('%(asctime)s [%(levelname)s]: %(message)s')
36
37 consoleHandler.setFormatter(consoleFormatter)
38 fileHandler.setFormatter(fileFormatter)
39
40 self.log.addHandler(consoleHandler)
41 self.log.addHandler(fileHandler)
42
43 - def d(self, message):
44 self.log.debug(message)
45
46 - def i(self, message):
47 self.log.info(message)
48
49 - def w(self, message):
50 self.log.warn(message)
51
52 - def e(self, message):
53 self.log.error(message)
54
55 - def c(self, message):
56 self.log.critical(message)
57
60