Karthikeyan Singaravelan <[email protected]> added the comment:
The output is the same in 3.8. I think this is due to propagation to the root
logger after logging.error call. When logger.error is called with no handler
attached to it then root logger handler is called and root handler's format is
used. The fix would be to do logger.propagate = False after logger
initialization. In your code in first call for logger.error just prints the
message, root handler is initialized during logging.error and thus the earlier
call works fine but the next call to logger calls the root logger's handler.
The fix in the reported case would be to add logger.propagate = False after
calling logging.error. I think logging.error has does something to define root
logger handler?
Hopefully Vinay has a better explanation of this behavior.
Sample code :
import logging
logging.basicConfig(format="root logger handler: %(message)s")
logger = logging.getLogger(name='main')
logger.setLevel(logging.INFO)
logger1 = logging.getLogger(name='main1')
logger1.setLevel(logging.INFO)
ch = logging.StreamHandler()
logger1_formatter = logging.Formatter('logger 1 handler : %(message)s')
ch.setFormatter(logger1_formatter)
logger1.addHandler(ch)
logger.error('logger XXX') # calls root logger's handler
logging.error('root logger XXX') # calls root logger's handler
logger1.error('logger 1 XXX') # Calls ch and then root logger's handler
logger1.propagate = False
logger1.error('logger 1 XXX') # Calls only ch since propagation is set to False
and root handler is not called
Output on 3.8 :
root logger handler: logger XXX
root logger handler: root logger XXX
logger 1 handler : logger 1 XXX
root logger handler: logger 1 XXX
logger 1 handler : logger 1 XXX
----------
nosy: +xtreak
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue35530>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com