2011-03-16 6 views
6

J'implémente la journalisation Python dans mon application et je veux être en mesure de tirer parti des paramètres "par défaut" de la racine. Je veux utiliser les paramètres root parce que je ne veux pas avoir à définir un logger par module dans un fichier de configuration.Désactiver la journalisation pour un package particulier

Lorsque j'ouvre la journalisation de niveau DEBUG pour l'enregistreur racine, je rencontre un problème avec l'API QPID Python Client. Mes fichiers journaux se déversent des instructions de débogage Qpid:

2011-03-16 09: 16: 18664 - qpid.messaging.io.ops - DEBUG - ENVOYÉ [8de6b2c]: ..

2011- 03-16 09: 16: 18,667 - qpid.messaging.io.raw - DEBUG - ..

2011-03-16 09: 16: 18,668 - qpid.messaging.io.raw - DEBUG - LIRE [8de6b2c] : ..

2011-03-16 09: 16: 18668 - qpid.messaging.io.ops - DEBUG - ..

Etc ..

donc deux questions principales:

1) Est-il possible de permettre * journalisation pour seulement mes modules sans définir un enregistreur par module? En d'autres termes, existe-t-il un moyen de faire des «paramètres de journalisation» partagés, donc au lieu de devoir définir une section logger_ par enregistreur, est-il possible de définir les paramètres par défaut?

Quelque chose comme:

[logger_shared_settings] 
    loggers = logger_A,logger_B,logger_C,logger_D 
    level=DEBUG 

2) Ou Comment puis-je filtrer l'enregistrement du paquet QPID via un fichier de configuration?

Voici le fichier log.conf:

[loggers] 
keys=root 

[handlers] 
keys=consoleHandler,fileHandler,nullHandler 

[formatters] 
keys=simpleFormatter 

[logger_root] 
level=DEBUG 
handlers=consoleHandler,fileHandler 

[handler_consoleHandler] 
class=StreamHandler 
level=DEBUG 
formatter=simpleFormatter 
args=(sys.stdout,) 

[handler_fileHandler] 
class=logging.handlers.RotatingFileHandler 
level=DEBUG 
formatter=simpleFormatter 
args=('out.log',) 

Voici était ce que je voulais éviter:

[loggers] 
keys=root, a, b, c, d 

[handlers] 
keys=consoleHandler,fileHandler,nullHandler 

[formatters] 
keys=simpleFormatter 

[logger_root] 
level=ERROR 
handlers=nullHandler 


[logger_a] 
level=DEBUG 
handlers=consoleHandler,fileHandler 


[logger_b] 
level=DEBUG 
handlers=consoleHandler,fileHandler 

[logger_c] 
level=DEBUG 
handlers=consoleHandler,fileHandler 

Répondre

3

Avec python2.7 vous pouvez définir NullHandler à enregistreur QPID:

[logger_qpid] 
level=NOTSET 
handlers=nullHandler 
qualname=qpid 
propagate=0 
+0

Cela fonctionne, connaissez-vous un moyen de faire un ensemble partagé tings? – Nix

+0

Hmmm ... que signifie "paramètres partagés"? – oxyum

+0

Un peu comme le root logger, mais une section différente que je pourrais appliquer les modules dans mon application. – Nix

Questions connexes