From: Vinay Sajip Date: Thu, 11 Aug 2011 12:45:48 +0000 (+0100) Subject: Issue #12718: Add documentation on using custom importers. X-Git-Tag: v3.2.2rc1~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=817495a63171d0bbfeaf03f3b5709e1dac399b5c;p=thirdparty%2FPython%2Fcpython.git Issue #12718: Add documentation on using custom importers. --- diff --git a/Doc/library/logging.config.rst b/Doc/library/logging.config.rst index bb80a7f0fe4f..b2dd71e65a1e 100644 --- a/Doc/library/logging.config.rst +++ b/Doc/library/logging.config.rst @@ -513,6 +513,31 @@ the system will attempt to retrieve the value from to ``config_dict['handlers']['myhandler']['mykey']['123']`` if that fails. + +.. _logging-import-resolution: + +Import resolution and custom importers +"""""""""""""""""""""""""""""""""""""" + +Import resolution, by default, uses the builtin :func:`__import__` function +to do its importing. You may want to replace this with your own importing +mechanism: if so, you can replace the :attr:`importer` attribute of the +:class:`DictConfigurator` or its superclass, the +:class:`BaseConfigurator` class. However, you need to be +careful because of the way functions are accessed from classes via +descriptors. If you are using a Python callable to do your imports, and you +want to define it at class level rather than instance level, you need to wrap +it with :func:`staticmethod`. For example:: + + from importlib import import_module + from logging.config import BaseConfigurator + + BaseConfigurator.importer = staticmethod(import_module) + +You don't need to wrap with :func:`staticmethod` if you're setting the import +callable on a configurator *instance*. + + .. _logging-config-fileformat: Configuration file format