On Apr 19, 3:45 pm, J <dreadpiratej...@gmail.com> wrote: > First, before I get farther, > > Is there a way for theloggingmodule to natively handle lists and > dict objects whenlogging? > > e.g. take this {'key1':'val1','key2':'val2'} and have it logged like this: > > INFO: key1: val1 > INFO: key2: val2 > > If I pass the dict or list directly to the logger, it is logged the > same as if you simply did this: > > mydict={1:1, 2:2} > mylist=[1,2,3] > > print mydict > print mylist > > >>> {1:1,2:2} > >>> [1,2,3] > > It came up that I wanted to haveloggingpresent command line options > from optparse if the log level was set to debug... so they'd look > something like this in the output: > > debug: True > sleep_time: 30 > log_file: /tmp/testlog > > So the options I've managed to work out are to either parse the list > or dict object item by item and feed those items one at a time into > the logger: > > for i in mylist: > logging.info(i) > > Or to extend the StreamHandler class to handle this by creating a new > report.msg... > > Then the discussion came up: which is better? To parse a dictionary > or list in the main code and pass each item to the logger one at a > time, or to extend the logger to handle it natively? > > Any thoughts on which is the more proper way to handle cases like this?
Since you want to have a specific output format for the logged information, the best way to go would be to write your own Formatter subclass, and check in its format() method whether you have lists/ dicts and then format them however you want into a string, and return the appropriately formatted string from that method. Regards, Vinay Sajip -- http://mail.python.org/mailman/listinfo/python-list