2016-02-25 2 views
0

J'ai rencontré un tel problème et je n'ai pas pu le résoudre. J'ai utilisé l'enregistreur de python pour consigner les informations, le niveau de l'enregistreur étant défini sur la connexion au journal.DEBUG. J'ai utilisé gunicorn pour enregistrer info en même temps. Normalement, le message d'erreur va à l'enregistreur de python, et les messages de lien et d'autres messages écrits par logger.info ou logger.debug vont au fichier journal de gunicorn. Cependant, avec une application, il ne se comporte pas ainsi. Les messages générés par logger.info vont également à l'enregistreur de python. Le problème est, je veux seulement voir des messages d'erreur dans l'enregistreur de python, tous les autres messages seraient vus de l'enregistreur de gunicorn. Quelqu'un peut-il me donner une idée de ce que je pourrais faire de mal dans cette situation?étrange comportement de l'enregistreur

thx à l'avance, alex

Voici ma config:

LOGGER_LEVEL = logging.DEBUG 
LOGGER_ROOT_NAME = "root" 
LOGGER_ROOT_HANLDERS = [logging.StreamHandler, logging.FileHandler] 
LOGGER_ROOT_LEVEL = LOGGER_LEVEL 
LOGGER_ROOT_FORMAT = "[%(asctime)s %(levelname)s %(name)s %(funcName)s:%(lineno)d] %(message)s" 
LOGGER_LEVEL = logging.ERROR 
LOGGER_FILE_PATH = "/data/log/web/" 

code:

def config_root_logger(self): 
    formatter = logging.Formatter(self.config.LOGGER_ROOT_FORMAT) 

    logger = logging.getLogger() 
    logger.setLevel(self.config.LOGGER_ROOT_LEVEL) 

    filename = os.path.join(self.config.LOGGER_FILE_PATH, "secondordersrv.log") 
    handler = logging.FileHandler(filename) 
    handler.setFormatter(formatter) 
    logger.addHandler(handler) 

    # 测试环境配置再增加console的日志记录 
    self._add_test_handler(logger, formatter) 

def _add_test_handler(self, logger, formatter): 
    # 测试环境配置再增加console的日志记录 
    if self.config.RUN_MODE == 'test': 
     handler = logging.StreamHandler() 
     handler.setFormatter(formatter) 
     logger.addHandler(handler) 

Ma config gunicorn ressemble à ceci:

errorlog = '/data/log/web/%s.log' % APP_NAME 
loglevel = 'info' 
accesslog = '-' 
+0

Sonne comme un problème avec la configuration de l'exploitation forestière. Il serait utile si vous fournissez le code lié à la journalisation. – RootTwo

Répondre

0

Vous n'avez pas défini le niveau de votre gestionnaire.

Après handler.setFormatter(formatter), ajoutez la ligne suivante:

handler.setLevel(self.config.LOGGER_LEVEL) 
+0

En fait vous avez raison. Cependant, j'ai écrit une autre application en utilisant la même configuration, mais cela fonctionne sans ajouter ce niveau de paramètre. Je me sens très étrange. BTW, comment avez-vous changé mon style d'entrée? J'ai ajouté 4 espaces avant mon code mais ça ne s'est pas montré correctement. – Alex

+0

En ce qui concerne le style de saisie, vous avez besoin d'une ligne vide entre le texte et la première ligne de code. – minghan