2016-04-04 6 views
5

के लिए कोई हैंडलर नहीं मिल सका मुझे यह लॉगर त्रुटि मिल रही है और मुझे यकीन नहीं है कि यह कैसे हुआ। मैंने बहुत सरल परीक्षण कार्यक्रम बनाए और उन्होंने काम किया। कोई विचार जहां से यह त्रुटि आ रही है?लॉगर "__main__"

इस कार्यक्रम को पायथन 2.6 में चला रहा है!

त्रुटि:

No handlers could be found for logger "__main__" 

कोड:

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() 

उत्तर

7

आप या तो logging.basicConfig पहले कॉल करने के लिए या सिर्फ logging.info जो स्वचालित रूप से यह कहेंगे फोन की जरूरत है।

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

यही काम करना चाहिए

0

आप इस तरह से एक विशिष्ट के लिए हैंडलर सेट कर सकते हैं:

: सभी वालों के लिए

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

या बुनियादी विन्यास सेट

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