improvements sought re. logging across modules

The Night Tripper jkn+gg at nicorp.co.uk
Wed Apr 24 12:54:14 EDT 2013


Hi all
	I have a small suite of python modules, say

	A.py
	B.py
	C.py

which can be invoked in a variety of ways. eg. 

1) A.py is invoked directly; this imports and uses B.py and C.py

2) B.py is invoked; this imports and uses A.py and C.py

I use the logging module in all of these python modules, and I want to be 
able to use a single logger across the entire suite of whichever set of 
scripts is running. 

The way I do this at the moment is to have a separate module mylogger.py:

== mylogger.py ==

import logging

class MyLogger:   #using python 2.4 ;-o
    def __init__(self):
        self.log = logging.getLogger(MY_APP_NAME)
    def setupLogging(self):
        self.log.setlevel(logging.DEBUG)
        # ...

# our singleton logging object
mylogger = Mylogger()
# EOF

and then in my other modules A.py, B.py etc. I have something like:

== A.py ==

import mylogger
gLog = mylogger.mylogger

if __name__ == "__main__":
    gLog.setupLogging()
    gLog.info("Module A running as main")
    main()
#EOF

== B.py ==

import mylogger
gLog = mylogger.mylogger

if __name__ == "__main__":
    gLog.setupLogging()
    gLog.info("Module B running as main")
    main()
# EOF

This works, but I can't help thinking I'm missing a trick here. Any 
suggestions?

    Thanks
    j^n




More information about the Python-list mailing list