On Wednesday, May 24, 2017 at 2:46:54 PM UTC-4, Tim Williams wrote: > (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
Just as a followup, if I use 'unrepr=True' in my ConfigObj, I don't have to convert the strings. -- https://mail.python.org/mailman/listinfo/python-list