Issue 33423: [logging] Improve consistency of logger mechanism. (original) (raw)

Created on 2018-05-04 02:38 by Daehee Kim, last changed 2022-04-11 14:59 by admin. This issue is now closed.

Messages (5)
msg316154 - (view) Author: Daehee Kim (Daehee Kim) Date: 2018-05-04 02:47
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.
msg316155 - (view) Author: Daehee Kim (Daehee Kim) Date: 2018-05-04 02:54
Please, ignore first one, `` It has duplicated message so I rewrote ``. I could not find delete or edit messages menu.
msg316156 - (view) Author: Anilyka Barry (abarry) * (Python triager) Date: 2018-05-04 02:56
You don't have access to this feature, so I've deleted the message for you :)
msg316157 - (view) Author: Daehee Kim (Daehee Kim) Date: 2018-05-04 03:06
Oh! Thank you for your kindness. :)
msg319038 - (view) Author: Vinay Sajip (vinay.sajip) * (Python committer) Date: 2018-06-08 10:11
You can't make the proposed change (removing call to basicConfig() from logging.debug() etc.) without breaking backwards compatibility. The inconsistency is just a consequence of how you choose to mix and match calls to the module-level convenience functions and calls to individual loggers. I've marked the resolution for this as "not a bug" rather than "wontfix" even though the issue is of type "enhancement". That's because I don't think the proposed change will be an actual enhancement over the status quo.
History
Date User Action Args
2022-04-11 14:59:00 admin set github: 77604
2018-06-08 10:11:54 vinay.sajip set status: open -> closednosy: + vinay.sajipmessages: + resolution: not a bugstage: resolved
2018-05-04 03:06:08 Daehee Kim set messages: +
2018-05-04 02:56:17 abarry set nosy: + abarrymessages: +
2018-05-04 02:55:32 abarry set messages: -
2018-05-04 02:54:21 Daehee Kim set messages: +
2018-05-04 02:47:33 Daehee Kim set messages: +
2018-05-04 02:38:56 Daehee Kim create