La meilleure pratique est, dans chaque module, d'avoir un enregistreur définie comme ceci:
import logging
logger = logging.getLogger(__name__)
près de la partie supérieure du module, puis dans un autre code dans le module n'par exemple
logger.debug('My message with %s', 'variable data')
Si vous avez besoin de subdiviser les activités d'exploitation forestière à l'intérieur d'un module, utilisez par exemple
loggerA = logging.getLogger(__name__ + '.A')
loggerB = logging.getLogger(__name__ + '.B')
et le journal d' loggerA
et loggerB
selon le cas.
Dans votre programme principal ou de programmes, de faire par exemple:
def main():
"your program code"
if __name__ == '__main__':
import logging.config
logging.config.fileConfig('/path/to/logging.conf')
main()
ou
def main():
import logging.config
logging.config.fileConfig('/path/to/logging.conf')
# your program code
if __name__ == '__main__':
main()
Voir ici pour la connexion de plusieurs modules, et ici pour la configuration de la journalisation pour le code qui sera utilisé comme un module de la bibliothèque par un autre code.
Mise à jour: Lors de l'appel d' fileConfig()
, vous pouvez spécifier disable_existing_loggers=False
si vous utilisez Python 2.6 ou version ultérieure (voir la documentation pour plus d'informations). La valeur par défaut est True
pour des raisons de compatibilité ascendante, ce qui provoque tous les enregistreurs être désactivée par fileConfig()
, à moins qu'ils ou leur ancêtre sont explicitement nommées dans la configuration. Avec la valeur de la valeur False
, existant, les bûcherons sont laissés seuls. Si à l'aide de Python 2.7 et Python 3.2 ou version ultérieure, vous pouvez envisager l' dictConfig()
API qui est mieux que fileConfig()
car il donne plus de contrôle sur la configuration.