# Path: resources/lib/core/logger/abstractlogger.py
# class AbstractLogger:
#     __metaclass__ = ABCMeta
# 
#     LEVELS = {
#         'debug': 0,
#         'info': 1,
#         'notice': 2,
#         'warning': 3,
#         'error': 4,
#         'severe': 5,
#         'fatal': 6
#     }
# 
#     def __init__(self, log_level):
#         self.log_level = log_level
# 
#     @abstractmethod
#     def debug(self, channel, text):
#         pass
# 
#     @abstractmethod
#     def info(self, channel, text):
#         pass
# 
#     @abstractmethod
#     def warning(self, channel, text):
#         pass
# 
#     @abstractmethod
#     def error(self, channel, text):
#         pass
# 
#     @abstractmethod
#     def critical(self, channel, text):
#         pass


from resources.lib.core.logger.abstractlogger import AbstractLogger
class LoggerChain(object):
    def __init__(self, prefix):
        self.prefix = prefix
        self.logger_chain = []

    def debug(self, message):
        for logger in self.logger_chain:
            logger.debug(self.prefix, message)

    def info(self, message):
        for logger in self.logger_chain:
            logger.info(self.prefix, message)

    def warning(self, message):
        for logger in self.logger_chain:
            logger.warning(self.prefix, message)

    def error(self, message):
        for logger in self.logger_chain:
            logger.error(self.prefix, message)

    def critical(self, message):
        for logger in self.logger_chain:
            logger.critical(self.prefix, message)

    def append(self, loggers):
        for logger in loggers:
            self._append_logger(logger)

    def _append_logger(self, logger):

# Path: resources/lib/core/logger/abstractlogger.py
# class AbstractLogger:
#     __metaclass__ = ABCMeta
# 
#     LEVELS = {
#         'debug': 0,
#         'info': 1,
#         'notice': 2,
#         'warning': 3,
#         'error': 4,
#         'severe': 5,
#         'fatal': 6
#     }
# 
#     def __init__(self, log_level):
#         self.log_level = log_level
# 
#     @abstractmethod
#     def debug(self, channel, text):
#         pass
# 
#     @abstractmethod
#     def info(self, channel, text):
#         pass
# 
#     @abstractmethod
#     def warning(self, channel, text):
#         pass
# 
#     @abstractmethod
#     def error(self, channel, text):
#         pass
# 
#     @abstractmethod
#     def critical(self, channel, text):
#         pass


# Path: resources/lib/core/logger/loggerchain.py
from resources.lib.core.logger.abstractlogger import AbstractLogger

class LoggerChain(object):
    def __init__(self, prefix):
        self.prefix = prefix
        self.logger_chain = []

    def debug(self, message):
        for logger in self.logger_chain:
            logger.debug(self.prefix, message)

    def info(self, message):
        for logger in self.logger_chain:
            logger.info(self.prefix, message)

    def warning(self, message):
        for logger in self.logger_chain:
            logger.warning(self.prefix, message)

    def error(self, message):
        for logger in self.logger_chain:
            logger.error(self.prefix, message)

    def critical(self, message):
        for logger in self.logger_chain:
            logger.critical(self.prefix, message)

    def append(self, loggers):
        for logger in loggers:
            self._append_logger(logger)

    def _append_logger(self, logger):

        if isinstance(logger, AbstractLogger):