Dynami c запись объекта класса python - PullRequest
1 голос
/ 10 апреля 2020

Я использую лог файл conf. Попытка получить разные файлы для каждого пользователя. Он работает нормально, создает файлы с именами пользователей, которых я передаю. Но затем, когда я пытаюсь создать запись в журнале для каждого пользователя с помощью: 'user1.logging.info (...)' и ' user2.logging.info (...) ', оба входа входят в файл журнала user2. Почему?

logging.conf файл:

[loggers]
keys = root, user

[handlers]
keys = consoleHandler, userFileHandler

[formatters]
keys = Formatter

[logger_root]
level = DEBUG
handlers = consoleHandler

[logger_user]
level = DEBUG
handlers = consoleHandler, userFileHandler
qualname = user
propagate = 0

[handler_consoleHandler]
class = StreamHandler
level = DEBUG
formatter = Formatter
args = (sys.stdout,)

[handler_userFileHandler]
class = FileHandler
level = DEBUG
formatter = Formatter
args = ('%(logfilename)s', 'a+')

[formatter_Formatter]
format = %(asctime)s [%(funcName)s] [%(levelname)s] %(message)s
datefmt = %Y-%m-%d %H:%M:%S

класс:

class User:
    """" Users instantiation class """
    def __init__(self, email, password):
        self.email = email
        self.password = password
        self.logger = self.Logger()

    def __repr__(self):
        return '{}'.format(self.email)

    def Logger(self):
        """ Users loggers instantiation """
        logging.config.fileConfig('log/logging.conf', defaults={'logfilename': 'log/{}.log'.format(self.email)})
        logger = logging.getLogger('user')
        logger.info('info log for: {}'.format(self.email)) # That entrance works fine
        return logger
...