Peter Otten wrote: > Eric S. Johansson wrote: > > Here is yet another revision of my example then:
it's making more and more sense although I don't quite follow 'property' quite yet. But I see that get_logger is invoked prior to the __logger.info call. I was looking at how to implement one of my other requirements (conditional based on a predicate) and I see that I could use a filter. I've experimented a little but come up empty. This is what I changed: class filter_test (logging.Filter): test_names = { "Felis.alpha" : True, "Catus.alpha" : False, } def ___init__ (self, name): """simple filter test """ self.name = name def filter(self, record): """test and forget """ return test_names.has_key(self.name) and test_names[self.name] class LoggedType(type): def __new__(mcl, name, bases, classdict): def get_logger(self): tag = "%s.%s" % (name,sys._getframe(1).f_code.co_name) lgr = logging.getLogger(tag) lgr.addFilter(filter_test) return lgr classdict["_%s__logger" % name] = property(get_logger) return type.__new__(mcl, name, bases, classdict) It's probably real obvious but I keep getting a: File "C:\Python24\lib\logging\__init__.py", line 539, in filter if not f.filter(record): TypeError: unbound method filter() must be called with filter_test instance as first argument (got LogRecord instance instead) I'm puzzled that I thought I was adding the filter object at the right point in time with addFilter. I wouldn't be surprised if I was totally off base but I'd be interested in figuring out how I went off the rails so I can fill in the knowledge. ---eric -- http://mail.python.org/mailman/listinfo/python-list