J'ai un petit projet python qui a la structure suivante -
Project
-- pkg01
-- test01.py
-- pkg02
-- test02.py
-- logging.conf
J'ai l'intention d'utiliser le module de journalisation par défaut pour imprimer des messages sur stdout et un fichier journal. Pour utiliser le module de journalisation, une certaine initialisation est requise -
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('pyApp')
logger.info('testing')
À l'heure actuelle, j'effectue cette initialisation dans chaque module avant de commencer la journalisation des messages. Est-il possible d'effectuer cette initialisation une seule fois au même endroit de sorte que les mêmes paramètres soient réutilisés en se connectant sur tout le projet?
package/__init__.py
. Ce n'est normalement pas l'endroit où vous mettez du if __name__ == '__main__'
code. En outre, l'exemple de prost semble appeler le code de configuration sans condition lors de l'importation, ce qui ne me semble pas correct. En règle générale, la journalisation du code de configuration doit être effectuée au même endroit et ne doit pas se produire comme effet secondaire de l'importation, sauf lorsque vous importez __main__.
if __name__ == '__main__'
? (il n'est pas mentionné explicitement en question si tel est le cas)
fileConfig
tous les modules qui se connectent, sauf si vous avez de laif __name__ == '__main__'
logique dans chacun d'eux. La réponse de prost n'est pas une bonne pratique si le package est une bibliothèque, bien que cela puisse fonctionner pour vous - il ne faut pas configurer la journalisation dans les packages de bibliothèque, sauf pour ajouter unNullHandler
.