content_image/838127.jpg
<img src='content_image/838127.jpg'>

Author Vinay Sajip <vinay_sajip at red-dove dot com> 

This page contains a number of recipes related to logging, which have been found useful in the past. 

## 1 Using logging in multiple modules 

Multiple calls to$_{logging.getLogger('someLogger')}$ return a reference to the same logger object. This is true not only within the same module, but also across modules as long as it is in the same Python interpreter process. It is true for references to the same object; additionally, application code can define and configure a parent logger in one module and create (but not configure) a child logger in a separate module, and all logger calls to the child will pass up to the parent. Here is a main module: 

import logging import auxiliary_module # create logger with 'spam_application' logger=logging.getLogger('spam_application ') logger.setLevel(logging .DEBUG) # create file handler which logs even debug messages fh =logging.FileHandler('spam.log ') fh.setLevel(logging .DEBUG) # create console handler with a higher log level ch =logging.StreamHandler() ch.setLevel(logging .ERROR) # create formatter and add it to the handlers formatter =logging.Formatter(' %(asctime)s - %(name)s - %(levelname)s - %(message)s ↪ → ') fh.setFormatter(formatter) ch.setFormatter(formatter) # add the handlers to the logger logger.addHandler(fh) logger.addHandler(ch) 

(continues on next page) 

