dictConfig: logging.StreamHandler object is not iterable.

Tim Williams tjandacw at cox.net
Wed May 24 14:46:42 EDT 2017


(Apologies for using Google Groups to post)

I'm trying to use dictConfig to configure logging. I keep running into the error that the logging.StreamHandler object is not iterable.

I'm using Python 3.4.3 on a Windows 7 box.

C:\Python34\python.exe 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)]


I want to use the configobj module to create the dictionary from an INI file, but that's not the problem I'm having. 

Here is my test code:
#############
import logging, logging.config, logging.handlers
import configobj

# config = configobj.ConfigObj('loggingtest.ini')
# config['version']=eval(config['version'])
config = {
          'version': 1, 
          'level': 'INFO',
          'formatters': {'fmt1': {'format': '%(asctime)s: (%(levelname)s)  %(message)s', 
                                  'datefmt': ''}
                         }, 
          'loggers': {'root': {'level': 'INFO', 
                               'handlers': 'cfg://handlers.console'}, 
                      'file': {'level': 'WARN', 
                               'handlers': 'cfg://handlers.file'}
                      }, 
          'handlers': {'console': {'class': 'logging.StreamHandler', 
                                   'level': 'INFO', 
                                   'stream': 'ext://sys.stdout'}, 
                       'file': {'class': 'logging.FileHandler', 
                                'level': 'WARN', 
                                'filename': 'test.log'}
                       }, 
          }


logging.config.dictConfig(config)
################

When I run it, I get this traceback:

Traceback (most recent call last):
  File "C:\Python34\lib\logging\config.py", line 611, in configure
    self.configure_logger(name, loggers[name])
  File "C:\Python34\lib\logging\config.py", line 775, in configure_logger
    self.common_logger_config(logger, config, incremental)
  File "C:\Python34\lib\logging\config.py", line 767, in common_logger_config
    self.add_handlers(logger, handlers)
  File "C:\Python34\lib\logging\config.py", line 748, in add_handlers
    for h in handlers:
TypeError: 'StreamHandler' object is not iterable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "L:\workspace\MyPython\src\testlog.py", line 27, in <module>
    logging.config.dictConfig(config)
  File "C:\Python34\lib\logging\config.py", line 789, in dictConfig
    dictConfigClass(config).configure()
  File "C:\Python34\lib\logging\config.py", line 614, in configure
    '%r: %s' % (name, e))
ValueError: Unable to configure logger 'root': 'StreamHandler' object is not iterable


I even tried creating a JSON file to create the dictionary, and got the same error.

Thanks for any help
--
Tim



More information about the Python-list mailing list