On Nov 24, 3:45 pm, Soltys <sol...@noabuse.com> wrote: > Barak, Ron pisze: > > > > > > > Hi, > > > I'm trying to add the logging module to my application, but I seem to be > > missing something. > > My application (a wxPython one) has a main script that calls various helper > > classes. > > I want the log messages from all modules to go to one central log file. > > > When I implement logging, I think that due to preparation, I get the same > > message more than once. > > > Here's an example: > > > $ cat -n server.py > > 1 import logging > > 2 import logging.handlers > > 3 > > 4 class Server(): > > 5 def __init__(self): > > 6 self.client_logger = logging.getLogger("client") > > 7 self.client_logger.setLevel(logging.DEBUG) > > 8 h = logging.FileHandler("client.log") > > 9 h.setLevel(logging.DEBUG) > > 10 formatter = logging.Formatter("%(asctime)s %(name)-12s > > %(levelname)-8s %(message)s") > > 11 h.setFormatter(formatter) > > 12 self.client_logger.addHandler(h) > > 13 > > 14 def util(self): > > 15 self.client_logger.warning('This message comes from Server > > module') > > > $ cat -n client.py > > 1 import logging > > 2 import logging.handlers > > 3 from server import Server > > 4 > > 5 class Client(): > > 6 def __init__(self): > > 7 self.client_logger = logging.getLogger("client") > > 8 self.client_logger.setLevel(logging.DEBUG) > > 9 h = logging.FileHandler("client.log") > > 10 h.setLevel(logging.DEBUG) > > 11 formatter = logging.Formatter("%(asctime)s %(name)-12s > > %(levelname)-8s %(message)s") > > 12 h.setFormatter(formatter) > > 13 self.client_logger.addHandler(h) > > 14 > > 15 def client_test(self): > > 16 self.client_logger.warning("This message comes from Client > > module") > > 17 > > 18 if __name__ == "__main__": > > 19 ser = Server() > > 20 cli = Client() > > 21 ser.util() > > 22 cli.client_test() > > $ rm client.log ; python client.py ; cat client.log > > 2009-11-24 14:40:39,762 client WARNING This message comes from > > Server module > > 2009-11-24 14:40:39,762 client WARNING This message comes from > > Server module > > 2009-11-24 14:40:39,762 client WARNING This message comes from > > Client module > > 2009-11-24 14:40:39,762 client WARNING This message comes from > > Client module > > Googling and readinghttp://docs.python.org/library/logging.htmldidn't > > enlighten me. > > > Could you suggest what should I change in the above scripts so that the log > > messages would appear only once ? > > > Thanks, > > Ron. > > Have a look athttp://docs.python.org/library/logging.html#logger-objects > First thing mentioned is Logger.propagate which is, what I believe, you're > looking for ;) > > -- > Soltys > > "Free software is a matter of liberty not price"- Hide quoted text - > > - Show quoted text -
Hi Soltys, I actually tried that, without any noticeable effects, viz.: $ cat server.py import logging import logging.handlers class Server(): def __init__(self): self.client_logger = logging.getLogger("client") self.client_logger.setLevel(logging.DEBUG) h = logging.FileHandler("client.log") h.setLevel(logging.DEBUG) formatter = logging.Formatter("%(asctime)s %(name)-12s % (levelname)-8s %(message)s") h.setFormatter(formatter) self.client_logger.addHandler(h) self.client_logger.propagate = 0 def util(self): self.client_logger.warning('This message comes from Server module') $ cat client.py import logging import logging.handlers from server import Server class Client(): def __init__(self): self.client_logger = logging.getLogger("client") self.client_logger.setLevel(logging.DEBUG) h = logging.FileHandler("client.log") h.setLevel(logging.DEBUG) formatter = logging.Formatter("%(asctime)s %(name)-12s % (levelname)-8s %(message)s") h.setFormatter(formatter) self.client_logger.addHandler(h) self.client_logger.propagate = 0 def client_test(self): self.client_logger.warning("This message comes from Client module") if __name__ == "__main__": ser = Server() cli = Client() ser.util() cli.client_test() $ rm client.log ; python client.py ; cat client.log 2009-11-24 16:06:35,710 client WARNING This message comes from Server module 2009-11-24 16:06:35,710 client WARNING This message comes from Server module 2009-11-24 16:06:35,710 client WARNING This message comes from Client module 2009-11-24 16:06:35,710 client WARNING This message comes from Client module $ -- http://mail.python.org/mailman/listinfo/python-list