Un peu de modularité.

This commit is contained in:
Pierre-Elliott Bécue 2015-02-21 11:42:29 +01:00
parent 3897336b48
commit 1a333ad482

View file

@ -25,37 +25,67 @@ class CLogger(logging.Logger):
"""
super(CLogger, self).__init__(loggerName)
self.c_formatter = None
self.c_file_handler = None
self.c_sh = None
self.c_level = level
# When no service is specified, we don't put the reference in the format.
if service is None:
fmt = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
self.c_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
else:
fmt = "%%(asctime)s - %%(name)s - %(service)s - %%(levelname)s - %%(message)s" % {'service': service}
self.c_format = "%%(asctime)s - %%(name)s - %(service)s - %%(levelname)s - %%(message)s" % {'service': service}
# Computes the file handler name using service name.
file_handler_path = os.path.join(LDIRPATH, "%s.log" % (loggerName,))
self.create_formatter()
self.apply_file_handler(loggerName)
if debug:
self.apply_stream_handler()
# Creates FileHandler
self.fh = logging.FileHandler(file_handler_path)
def get_file_handler_path(self):
"""Returns the file handler path"""
if self.__file_handler_path is None:
return ''
return self.__file_handler_path
# Catches appropriate level in logging.
self.fhlevel = getattr(logging, level.upper(), logging.INFO)
self.fh.setLevel(self.fhlevel)
def create_formatter(self):
"""Creates a formatter based on CFormatter class.
It uses self.format as a source."""
if self.c_formatter is not None:
return
# Creates formatter
self.formatter = CFormatter(fmt, "%Y-%m-%dT%H:%M:%S.%f%z")
self.c_formatter = CFormatter(self.c_format, "%Y-%m-%dT%H:%M:%S.%f%z")
def apply_stream_handler(self):
"""Creates a streamhandler that prints to stdout.
Its level is debug"""
self.c_sh = logging.StreamHandler()
self.c_shlevel = logging.DEBUG
self.c_sh.setLevel(self.c_shlevel)
self.c_sh.setFormatter(self.c_formatter)
self.addHandler(self.c_sh)
def apply_file_handler(self, loggerName):
"""Creates a file handler which level is given by self.c_level"""
if self.c_file_handler is not None:
return
# Computes the file handler name using service name.
self.__file_handler_path = os.path.join(LDIRPATH, "%s.log" % (loggerName,))
# Creates FileHandler
self.c_file_handler = logging.FileHandler(self.__file_handler_path)
# Catches appropriate level in logging.
self.c_file_handler_level = getattr(logging, self.c_level.upper(), logging.INFO)
self.c_file_handler.setLevel(self.c_file_handler_level)
# Adds formatter to FileHandler
self.fh.setFormatter(self.formatter)
if debug:
self.sh = logging.StreamHandler()
self.shlevel = logging.DEBUG
self.sh.setLevel(self.shlevel)
self.sh.setFormatter(self.formatter)
self.addHandler(self.sh)
self.c_file_handler.setFormatter(self.c_formatter)
# Adds FileHandler to Handlers
self.addHandler(self.fh)
self.addHandler(self.c_file_handler)
class CFormatter(logging.Formatter):
"""