2016-04-04 15 views
5

Ho riscontrato questo errore nel registro e non sono sicuro di come si è verificato. Ho creato programmi di test molto più semplici e hanno funzionato. Qualche idea da cui potrebbe venire questo errore?Non è stato possibile trovare gestori per il logger "__main__"

Esecuzione di questo programma in Python 2.6!

errore:

No handlers could be found for logger "__main__" 

codice:

import logging 
import subprocess as sp 

logger = logging.getLogger(__name__) 

def runpig(filename): 
    # does not use logger 
    .... 
    .... 
    return 

def main(): 
    try: 
     runpig(filename) 
    except sp.CalledProcessError as ex: 
     logger.error(ex.message) 
    except: 
     logger.info("Error occured") 

if __name__ == "__main__": 
    main() 

risposta

7

Si sia bisogno di chiamare logging.basicConfig prima o semplicemente chiamare logging.info che avrebbe automaticamente chiamarlo.

if __name__ == "__main__": 
    logging.info("Begin") 
    main() 

che dovrebbe funzionare

0

È possibile impostare il gestore per una specifica in questo modo:

logger = logging.getLogger(__name__) 
handler = logging.StreamHandler() 
formatter = logging.Formatter("%(asctime)s - %(name)s (%(lineno)s) - %(levelname)s: %(message)s", datefmt='%Y.%m.%d %H:%M:%S') 
handler.setFormatter(formatter) 
logger.addHandler(handler) 

https://stackoverflow.com/a/26258712/1907997 https://docs.python.org/2/library/logging.html#logging.Logger.addHandler

O impostare la configurazione di base per tutti i logger:

logger = logging.getLogger(__name__) 
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s (%(lineno)s) - %(levelname)s: %(message)s", datefmt='%Y.%m.%d %H:%M:%S') 

https://docs.python.org/2/library/logging.html#logging.basicConfig