Search code examples
pythonlogginghandlerpython-logging

No handlers could be found for logger


I am newbie to python. I was trying logging in python and I came across No handlers could be found for logger error while trying to print some warning through logger instance. Below is the code I tried

import logging
logger=logging.getLogger('logger')
logger.warning('The system may break down')

And I get this error No handlers could be found for logger "logger"

What's confusing me is when I first try to print warning using logging and then through logger , it works fine, like

>>> import logging
>>> logging.warning('This is a WARNING!!!!')
WARNING:root:This is a WARNING!!!!
>>> 
>>> logger.warning('WARNING!!!!')
WARNING:logger:WARNING!!!!

Can someone throw some light on what's happening in second scenario?


Solution

  • For logging some message through logger, in Python at least one handler should be added to the logger object. By default the debug, warn and other functions in logging module will call basicConfig which in turn will add a StreamHandler to the root logger.

    It's always recommended to add your required Handler to your logger object you are writing for your module.

    You could refer to official Python docs, which has an awesome tutorial or you can better check out the source code of logging module yourself.

    Simply you can check the source in Python shell itself by,

    import logging
    import inspect
    print(inspect.getsource(logging))
    

    Finally, calling the basicConfig explicitly will resolve the issue.

    import logging
    logging.basicConfig()
    logger = logging.getLogger('logger')
    logger.warning('The system may break down')