hand made class with destructor and the logging module

Vinay Sajip vinay_sajip at yahoo.co.uk
Wed Oct 27 18:41:43 EDT 2010


On Oct 27, 3:21 pm, climb65 <clim... at free.fr> wrote:
> This class has a destructor which is expected to log something into my log
> file if a crash occurs.
> Well, the destructor works well but during the crash, python has already
> closed the log file and the reference to the Logger has been set to None.
> So, I can't log anything!
>
> How is it possible to solve this problem?
>

Unfortunately, when a process is about to exit (for whatever reason),
things may not shut down in an order you would like. I'd advise
wrapping your main program in an try: except: block. If you have a
main, function, for example:

import logging, sys

logger = logging.getLogger(__name__)

def main():
    #configure logging, say using basicConfig()
    try:
        # here is whatever your main program is doing now
        retcode = 0
    except Exception:
        logger.exception('Exception raised during processing')
        retcode = 1
    sys.exit(retcode)

if __name__ == '__main__':
    main()



More information about the Python-list mailing list