Confused About Python Loggin

Peter Otten __peter__ at web.de
Fri Jul 31 03:14:59 EDT 2009


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)

The code you present should work as you expect:

$ cat tmp.py
import logging

fileHandler = logging.FileHandler('tmp.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)


logger.info("to console")
fileLogger.info("to file")
$ python tmp.py
to console
$ cat tmp.txt
to file

What problems exactly are you running into if you omit the basicConfig() 
call?

Peter




More information about the Python-list mailing list