This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Daehee Kim
Recipients Daehee Kim
Date 2018-05-04.02:47:33
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1525402053.16.0.682650639539.issue33423@psf.upfronthosting.co.za>
In-reply-to
Content
There's a proposal for a fix inconsistency of logger mechanism.
See below.

Example 1.
---------------------------------------------------
import logging

app_logger = logging.getLogger('app')

app_logger.error('foo')
logging.error('goo')
app_logger.error('foo')
---------------------------------------------------

result:
foo
ERROR:root:goo
ERROR:app:foo
---------------------------------------------------
You can see the inconsistency of app_logger results.


Example 2.
---------------------------------------------------
import logging

stream_handler = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
stream_handler.setFormatter(formatter)

app_logger: logging.Logger = logging.getLogger('app')
app_logger.setLevel(logging.ERROR)
app_logger.addHandler(stream_handler)


app_logger.critical('foo')
logging.critical('goo')
app_logger.critical('foo')
---------------------------------------------------

results:
2018-05-04 11:21:15,199 - app - CRITICAL - foo
CRITICAL:root:goo
2018-05-04 11:21:15,200 - app - CRITICAL - foo
CRITICAL:app:foo
---------------------------------------------------

You can see even inconsistency of app_logger`s outputs count.

So I have some proposals for fix it.

Proposal 1. 
Remove implicit calling `basicConfig`. Then you can get the consistent results.

Result of the example 1.
foo
goo
foo

Result of the example 2.
2018-05-04 11:31:36,069 - app - CRITICAL - foo
goo
2018-05-04 11:31:36,070 - app - CRITICAL - foo

link : https://github.com/zsaladin/cpython/commit/c4e789af32da36ba49196fd6be9c070f62346b7a#diff-043d23e54edc5360a7785ae212d1b806


Proposal 2.
Add calling `basicConfig` in `callHandlers` method if the root logger has no handler.

Result of the example 1.
ERROR:app:foo
ERROR:root:goo
ERROR:app:foo

Result of the example 2.
2018-05-04 11:36:45,318 - app - CRITICAL - foo
CRITICAL:app:foo
CRITICAL:root:goo
2018-05-04 11:36:45,319 - app - CRITICAL - foo
CRITICAL:app:foo

https://github.com/zsaladin/cpython/commit/fc295b46a4de584dc5c6724125b2c0f8b2694aa6#diff-043d23e54edc5360a7785ae212d1b806


Thank you.
History
Date User Action Args
2018-05-04 02:47:33Daehee Kimsetrecipients: + Daehee Kim
2018-05-04 02:47:33Daehee Kimsetmessageid: <1525402053.16.0.682650639539.issue33423@psf.upfronthosting.co.za>
2018-05-04 02:47:33Daehee Kimlinkissue33423 messages
2018-05-04 02:47:33Daehee Kimcreate