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 logfile = path.expanduser(logfile)
21 if not path.exists(path.dirname(logfile)):
22 os.makedirs(path.dirname(logfile))
23
24 self.log = logging.getLogger("LinspectorLogger")
25 self.log.setLevel(logging.DEBUG)
26
27 consoleHandler = logging.StreamHandler()
28 consoleHandler.setLevel(logLevel)
29
30 fileHandler = logging.handlers.RotatingFileHandler(logfile, maxBytes=1024000, backupCount=4)
31 fileHandler.setLevel(logfileLevel)
32
33 consoleFormatter = logging.Formatter('[%(levelname)s]: %(message)s')
34 fileFormatter = logging.Formatter('%(asctime)s [%(levelname)s]: %(message)s')
35
36 consoleHandler.setFormatter(consoleFormatter)
37 fileHandler.setFormatter(fileFormatter)
38
39 self.log.addHandler(consoleHandler)
40 self.log.addHandler(fileHandler)
41
42 - def d(self, message):
43 self.log.debug(message)
44
45 - def i(self, message):
46 self.log.info(message)
47
48 - def w(self, message):
49 self.log.warn(message)
50
51 - def e(self, message):
52 self.log.error(message)
53
54 - def c(self, message):
55 self.log.critical(message)
56
59