Python Logging: dictConfig

Estoy intentando usar un archivo de configuración para configurar el registro de Python, pero también estoy agregando controladores después de que se haya cargado la configuración de dict. SO mi archivo de configuración es como

version: 1 formatters: default_formatter: format: '%(asctime)s : %(levelname)s : %(message)s' datefmt: '%d-%b-%Y %H:%M:%S' plain_formatter: format: '%(message)s' handlers: console_default_handler: class: logging.StreamHandler level: INFO formatter: default_formatter stream: ext://sys.stdout root: level: INFO handlers: [console_default_handler] 

Luego en el código – yo hago

 log_config_dict=yaml.load(open(log_config_file, 'r')) logging.config.dictConfig(log_config_dict) 

Y quiero agregar los madereros de esta manera –

 fhandler1=logging.FileHandler(log_file_name,mode="w") fhandler1.setFormatter(log_config_dict['formatters']['plain_formatter']) fhandler1.setLevel(logging.DEBUG) 

Esto no está funcionando. ¿Hay alguna manera de capturar los valores de recuperación definidos en dictConfig para usarlos en mi configuración de registro manual, por favor?

Gracias

 #!/usr/bin/env python # -*- coding: utf-8 -*- import logging import logging.handlers from logging.config import dictConfig logger = logging.getLogger(__name__) DEFAULT_LOGGING = { 'version': 1, 'disable_existing_loggers': False, } def configure_logging(logfile_path): """ Initialize logging defaults for Project. :param logfile_path: logfile used to the logfile :type logfile_path: string This function does: - Assign INFO and DEBUG level to logger file handler and console handler """ dictConfig(DEFAULT_LOGGING) default_formatter = logging.Formatter( "[%(asctime)s] [%(levelname)s] [%(name)s] [%(funcName)s():%(lineno)s] [PID:%(process)d TID:%(thread)d] %(message)s", "%d/%m/%Y %H:%M:%S") file_handler = logging.handlers.RotatingFileHandler(logfile_path, maxBytes=10485760,backupCount=300, encoding='utf-8') file_handler.setLevel(logging.INFO) console_handler = logging.StreamHandler() console_handler.setLevel(logging.DEBUG) file_handler.setFormatter(default_formatter) console_handler.setFormatter(default_formatter) logging.root.setLevel(logging.DEBUG) logging.root.addHandler(file_handler) logging.root.addHandler(console_handler) [31/10/2015 22:00:33] [DEBUG] [yourmodulename] [yourfunction_name():9] [PID:61314 TID:140735248744448] this is logger infomation from hello module 

Creo que el registro de configuración con la función es más conveniente.

Ohh me lo imagino. Lo que necesito hacer es

 formatter =logging.Formatter(log_config_dict['formatters']['plain_formatter']['format']) fhandler1.setFormatter(formatter) 

Por lo tanto, necesito crear un objeto Formatter.