logging.config, AttributeError: тип объекта «FileHandler» не имеет атрибута «split» - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь настроить запись в журнал, используя метод dictConfig ().Мне кажется, я понял Сведения о схеме словаря , но мой код все равно выдает ошибку.

Код:

import logging
import logging.config

verbose_formatter_conf = {
    "format": "%(asctime)-15s %(name)s %(levelname)-9s %(message)s",
}

formatters_dict = {
    "verbose_formatter": verbose_formatter_conf,
}

logfile_handler_conf = {
    "class": logging.FileHandler,
    "level": logging.DEBUG,
    "formatter": "verbose_formatter",
    "filename": "logfile.txt",
    "mode": "w",
    "encoding": "utf-8",
}

handlers_dict = {
    "logfile_handler": logfile_handler_conf,
}

verbose_file_logger_conf = {
    "propagate": True,
    "handlers": ["logfile_handler"]
}

loggers_dict = {
    "verbose_file_logger": verbose_file_logger_conf
}

final_conf = {
    "version": 1,
    "formatters": formatters_dict,
    "handlers": handlers_dict,
    "loggers": loggers_dict,
    "incremental": False,
}

logging.config.dictConfig(final_conf)
logger = logging.getLogger(__name__)

logger.debug("hello")

Выдает ошибку:

Traceback (most recent call last):
  File "C:\Program Files\Python37\lib\logging\config.py", line 555, in configure
    handler = self.configure_handler(handlers[name])
  File "C:\Program Files\Python37\lib\logging\config.py", line 705, in configure_handler
    klass = self.resolve(cname)
  File "C:\Program Files\Python37\lib\logging\config.py", line 372, in resolve
    name = s.split('.')
AttributeError: type object 'FileHandler' has no attribute 'split'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "c:\Users\Tejul\.vscode\extensions\ms-python.python-2019.6.22090\pythonFiles\ptvsd_launcher.py", line 43, in <module>
    main(ptvsdArgs)
  File "c:\Users\Tejul\.vscode\extensions\ms-python.python-2019.6.22090\pythonFiles\lib\python\ptvsd\__main__.py", line 434, in main
    run()
  File "c:\Users\Tejul\.vscode\extensions\ms-python.python-2019.6.22090\pythonFiles\lib\python\ptvsd\__main__.py", line 312, in run_file
    runpy.run_path(target, run_name='__main__')
  File "C:\Program Files\Python37\lib\runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "C:\Program Files\Python37\lib\runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "C:\Program Files\Python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "g:\Sven\Python\pygtris\logger_conf.py", line 42, in <module>
    logging.config.dictConfig(final_conf)
  File "C:\Program Files\Python37\lib\logging\config.py", line 792, in dictConfig
    dictConfigClass(config).configure()
  File "C:\Program Files\Python37\lib\logging\config.py", line 563, in configure
    '%r' % name) from e
ValueError: Unable to configure handler 'logfile_handler'

Но я этого не понимаю.Я считаю, что мой обработчик настроен так, как указано в документации.Я что-то наблюдал?

1 Ответ

0 голосов
/ 29 июня 2019

Ошибка, по-видимому, заключается в том, что значением «class» в словаре logfile_handler_conf должна быть строка «logging.FileHandler», а не сам класс FileHandler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...