On 24May2012 12:48, Jean-Michel Pichavant <jeanmic...@sequans.com> wrote: | Peter Otten wrote: | > Jean-Michel Pichavant wrote: | >> Fayaz Yusuf Khan wrote: | >>> Jean-Michel Pichavant wrote: | >>>> Meanwhile you can shorten the code this way: | >>>> root.addHandler(FileHandler('debug.log')) | >>>> root.handlers[-1].setLevel(DEBUG) | >>>> | >>> Eh? Readability was the aim. | >>> | >> I fail to see how it's not readable, code is short and no magic is | >> involved provided you know about slicing list items. Anyway, to answer | > | > You have to know or verify that .addHandler() appends to the .handlers list, | > you have to check if or under which conditions | > | > h = SomeHandler() | > root.addHandler(h) | > assert h is root.handlers[-1] | > | > can fail. In short, if I see such a hack my trust in the author of that code | > is significantly lowered. | | I now fail to see how it's a hack. handlers is a public attribute of | loggers. | | FYI | | def addHandler(self, hdlr): | """ | Add the specified handler to this logger. | """ | if not (hdlr in self.handlers): | self.handlers.append(hdlr)
Nothing there says handlers is a list. (Nothing in the docs says that the .handlers even exists, AFAICS.) Might be a set or something more esoteric. Particularly, if I wanted to add and remove handlers a lot I might well expect (or at least imagine) it to be a set. So I too find: root.handlers[-1] a risky thing to say, and harder to read because it assumes something I would not want to rely on. Versus the original proposal that avoids all need to know how logging tracks its handler internally. Cheers, -- Cameron Simpson <c...@zip.com.au> DoD#743 http://www.cskk.ezoshosting.com/cs/ The reason that God was able to create the world in seven days is that he didn't have to worry about the installed base. - Enzo Torresi -- http://mail.python.org/mailman/listinfo/python-list