как я могу запустить настраиваемый регистратор из функции в python - PullRequest
0 голосов
/ 20 июня 2020

Я создал функцию настройки журнала в Python файле test.py:

import logging
def logger1():
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.INFO)
    formatter = logging.Formatter('%(levelname)s:%(name)s:%(message)s')
    file_handler = logging.FileHandler('employee.log')
    file_handler.setFormatter(formatter)
    logger.addHandler(file_handler)
    return logger

И создал еще один файл test1.py, в котором я выполняю операцию ниже и пытаюсь записать данные

from utility.test import logger1
class Employee:
    """A sample Employee class"""
    def __init__(self, first, last):
        self.first = first
        self.last = last
        logger1.logger.info('Created Employee: {} - {}'.format(self.fullname, self.email))
    @property
    def email(self):
        return '{}.{}@email.com'.format(self.first, self.last)
    @property
    def fullname(self):
        return '{} {}'.format(self.first, self.last)

Но когда я запускаю этот Python файл test1.py, я получаю следующую ошибку:

Traceback (most recent call last):
File "C:/python/SeleniumFramework/utility/test2.py", line 21, in <module>
    emp_1 = Employee('John', 'Smith')
File "C:/python/SeleniumFramework/utility/test2.py", line 10, in __init__
    logger1.logger.info('Created Employee: {} - {}'.format(self.fullname, self.email))
AttributeError: 'function' object has no attribute 'logger'

Примечание: без создания функции настройки регистратора он работает файл.

1 Ответ

0 голосов
/ 20 июня 2020

Вы забыли скобки позади logger1 ...

Это означает, что для получения logger1 вам нужно будет вызвать его, а не передавать ссылку на функции:

logger1().info("Look I am log")

Кстати, с этой функцией вы всегда будет создавать новый экземпляр журнала, что, я думаю, не является вашим намерением.

...