La journalisation à l'aide elasticsearch-py

Je voudrais connecter mon python script qui utilise elasticsearch-py. En particulier, je veux avoir trois journaux:

  1. Journal général: journal INFO et au-dessus des deux à la stdout et dans un fichier.
  2. ES de journal: seulement ES lié uniquement les messages dans un fichier.
  3. ES du journal de suivi: Extended ES d'enregistrement (curl requêtes et leur production par exemple) vers un fichier.

Voici ce que j'ai à ce jour:

import logging
import logging.handlers

es_logger = logging.getLogger('elasticsearch')
es_logger.setLevel(logging.INFO)
es_logger_handler=logging.handlers.RotatingFileHandler('top-camps-base.log',
                                                          maxBytes=0.5*10**9,
                                                          backupCount=3)
es_logger.addHandler(es_logger_handler)

es_tracer = logging.getLogger('elasticsearch.trace')
es_tracer.setLevel(logging.DEBUG)
es_tracer_handler=logging.handlers.RotatingFileHandler('top-camps-full.log',
                                                       maxBytes=0.5*10**9,
                                                       backupCount=3)
es_tracer.addHandler(es_tracer_handler)

logger = logging.getLogger('mainLog')
logger.setLevel(logging.DEBUG)
# create file handler
fileHandler = logging.handlers.RotatingFileHandler('top-camps.log',
                                                   maxBytes=10**6,
                                                   backupCount=3)
fileHandler.setLevel(logging.INFO)
# create console handler
consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.INFO)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
consoleHandler.setFormatter(formatter)
fileHandler.setFormatter(formatter)
# add the handlers to logger
logger.addHandler(consoleHandler)
logger.addHandler(fileHandler)

Mon problème est que INFO messages de es_logger sont également d'afficher sur le terminal. Comme une question de fait, le journal des messages sont enregistrés dans les fichiers!

Si je dissolvant de la partie relative à logger, puis l'ES journalisation fonctionne très bien, c'est à dire uniquement enregistrées dans le fichier correspondant. Mais ensuite, je n'ai pas l'autre partie.... Qu'est-ce que je fais mal avec la dernière partie de l'paramètres?


Modifier

Possible astuce: Dans les sources de elasticsearch-py il y a un bûcheron nommé logger. Se pourrait-il qu'il est en conflit avec le mien? J'ai essayé de changer le nom de logger à main_logger dans les lignes ci-dessus, mais il n'a pas aidé.

Possible astuce 2: Si je remplace le logger = logging.getLogger('mainLog') avec logger = logging.getLogger(), puis le format de la sortie de la console de es_logger change et devient identique à celle définie dans le code.

InformationsquelleAutor Dror | 2014-08-22