Karthikeyan Singaravelan <tir.kar...@gmail.com> 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 <rep...@bugs.python.org>
<https://bugs.python.org/issue35530>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to