Je souhaite configurer mon enregistreur Python de manière à ce que chaque instance de l'enregistreur enregistre un fichier portant le même nom que le nom de l'enregistreur lui-même.Nom de fichier dynamique Python
.: par exemple
log_hm = logging.getLogger('healthmonitor')
log_hm.info("Testing Log") # Should log to /some/path/healthmonitor.log
log_sc = logging.getLogger('scripts')
log_sc.debug("Testing Scripts") # Should log to /some/path/scripts.log
log_cr = logging.getLogger('cron')
log_cr.info("Testing cron") # Should log to /some/path/cron.log
Je veux garder générique et ne veux pas coder toutes sortes de noms d'enregistreur que je peux avoir. Est-ce possible?
Pourrait-il être possible d'ajouter le gestionnaire avant l'appel "getLogger" de sorte que je n'ai pas à l'ajouter à chaque fois que j'appelle getLogger? – sharjeel
@sharjeel: Définit le gestionnaire lors de l'initialisation et tous les futurs appels à 'getLogger()' n'ont pas besoin d'ajouter un gestionnaire. La solution est similaire à celle de ~ unutbu. Dans cet exemple, myLogger devrait être appelé une seule fois pour le fichier, sinon vous aurez des effets secondaires étranges. –
J'aime cette approche. Vous pouvez également garder une trace des fichiers ouverts et pour une nouvelle instance, vérifiez si le fichier est déjà ouvert puis ne rouvrez pas. Cependant, ce genre de science n'est pas requis dans mon cas :-) – sharjeel