Я пытаюсь настроить запись в журнал, используя метод 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'
Но я этого не понимаю.Я считаю, что мой обработчик настроен так, как указано в документации.Я что-то наблюдал?