Confused about logger config from within Python (3)
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Fri Dec 28 23:31:46 EST 2012
On Fri, 28 Dec 2012 11:57:29 -0800, andrew cooke wrote:
> When I use a config file things seem to work (in other projects), but
> for my current code I hoped to configure logging from Python.
>
> I distilled my problem down to the following test, which does not print
> anything. Please can someone explain why? I was expecting the module's
> logger to delegate to root, which has the DEBUG level set.
>
> from logging import DEBUG, root, getLogger
> from unittest import TestCase
>
> class LoggingTest(TestCase):
> def test_direct(self):
> root.setLevel(DEBUG)
> getLogger(__name__).debug("hello world")
Nothing gets printed because you don't do anything except define a class.
Try instantiating the class, then calling the test_direct method. The
most convenient way to do so is with the unittest module:
# after defining the class above
import unittest
unittest.main()
which then prints:
py> unittest.main()
No handlers could be found for logger "__main__"
.
----------------------------------------------------------------------
Ran 1 test in 0.045s
OK
So you need a handler.
--
Steven
More information about the Python-list
mailing list