Confused About Python Loggin

Jean-Michel Pichavant jeanmichel at
Fri Jul 31 09:04:59 EDT 2009

Jannik Sundø wrote:
> Hi all. I think I fixed this problem by setting fileLogger.propagate = 
> 0. Otherwise it will propagate up to the root logger, which outputs to 
> stdout, as far as I can understand.
> On 31 Jul 2009, at 01:17, Jannik Sundø wrote:
>> Dear all, I am quite confused about the Python logging. I have read 
>> and re-read the Python documentation for the Python logging module 
>> and googled, but to no avail. I simply want one logger to log to a 
>> file and another logger to log to the console. Neither should log the 
>> other's messages. The code below causes fileLogger to log to BOTH a 
>> file and the console, how come? It seems to me that a call such as 
>> "consoleHandler = logging.StreamHandler()" affects other loggers, 
>> which I do not want. Also, if I do not do 
>> logging.basicConfig(level=logging.INFO) in one of the classes of my 
>> application, the logging does not work. Any ideas how come?
>> Thanks a lot for any help! :)
>> fileHandler = logging.FileHandler('../../logs/log.txt')
>> fileLogger = logging.getLogger('TESTHARNESSFILE')
>> fileLogger.addHandler(fileHandler)
>> fileLogger.setLevel(logging.INFO)
>> consoleHandler = logging.StreamHandler()
>> logger = logging.getLogger('TESTHARNESS')
>> logger.addHandler(consoleHandler)
>> logger.setLevel(logging.INFO)
> --
Please do not top post :o)

Are sure you have used the code provided above ?
Loggers only propagate events to its parent.

fileLogger = logging.getLogger('TESTHARNESSFILE"
logger = logging.getLogger('TESTHARNESS')
Those one have no parent relationship.

However these one have parent relationship:
fileLogger = logging.getLogger('TESTHARNESS.FILE") # note the dotted name
logger = logging.getLogger('TESTHARNESS')

Or maybe you have added a handler to the root logger...

Using the propagate attribute is correct only between 2 loggers that are 
meant to be parents.


More information about the Python-list mailing list