A few days ago changes were checked into the master branch to improve the way logging works. The modules ipapython.ipa_log_manager and ipapython.log_manager were added and contain extensive documentation (links to their HTML version appear below). But you don't need to read through it all, you just need to know a few basic facts for all code going forward, items 1-3 are mandatory to know, the rest are helpful.

1) Never import the Python logging module, instead:

from ipapython.log_manager import *

2) Use of the global root logger has been replaced, instead of logging.debug() use root_logger.debug(), etc.

3) Stand-alone programs should set up logging via this common utility, standard_logging_setup()

4) You can now control which classes (e.g. loggers) emit debug messages, it's no longer an all or nothing proposition, you can turn on debugging for just the code you're working on (or other level messages). Just edit one of the config files read by Env() and add a line like this:

log_logger_debug = comma separated list of regular expressions

where each regular expression matches a class (logger) name(s)

See IPALogManger.configure_from_env for details

5) The Env() config files now support the verbose flag to turn on info level messages.

6) Avoid use of the global root logger if possible, instead use a logger belonging to the logical code location.

If you have a class it's as simple as:

    log_mgr.get_logger(self, True)

Now you're class will have .debug(), .info() etc. methods bound to it and when you log your class name (or other name) will be visible (this happens automatically for all plugins).

If you don't have a class to hang your logger on use a meaningful name and create one, e.g.:

    logger = log_mgr.get_logger('client_installer')


    logger = log_mgr.get_logger(os.path.basename(sys.argv[0]))

HTML versions of the documentation can be found here:


John Dennis <jden...@redhat.com>

Looking to carve out IT costs?

Freeipa-devel mailing list

Reply via email to