Issue 34107: root.warning('msg') output format modified by logging.warning('msg') (original) (raw)
Created on 2018-07-13 00:25 by Michael Kearney, last changed 2022-04-11 14:59 by admin. This issue is now closed.
Messages (3)
Author: Michael Kearney (Michael Kearney)
Date: 2018-07-13 00:25
0 >>> import logging 1 >>> root=logging.getLogger(name='root') 2 >>> root.warning('msg') 3 msg <----- Compare this line 4 >>> logging.warning('msg') 5 WARNING:root:msg 6 >>> root.warning('msg') 7 WARNING:root:msg <------ with this line
Specifically, I was surprised to see line 7 response to line 6 given line 3 response to line 2
logger methods log(),critical(),error(),info() act the same way.
A workaround from issue 33897 fixes things logging.basicConfig(level=logging.DEBUG, force=True)
I discovered this when exploring "logging" module defaults, It is the sort of thing someone new to the module might encounter. I did.
Slightly more comprehensive unittest example attached.
This may be my first real submission. Feedback appreciated
Author: Vinay Sajip (vinay.sajip) *
Date: 2018-07-13 09:09
This behaviour is as expected. If no handlers are configured for logging, an internal "handler of last resort" is used, with just the message output. See:
https://docs.python.org/3/howto/logging.html#what-happens-if-no-configuration-is-provided
If you call logging.warning(...), and if no handlers are configured, then basicConfig() is internally called to set up a handler with a basic format string. See:
https://docs.python.org/3/library/logging.html#logging.log
So, what you've described is as it should be.
Author: Michael Kearney (Michael Kearney)
Date: 2018-07-13 20:03
Thanks for the clarification and doc pointers. I saw "lastResort" attribute in the code but had not fully understood what was going on. I am not certain I really do now, but that's ok. That's why we read docs, read and write code. Eventually it starts making sense. It appears that there is history to contend with or complications provoked by threads.
I had not yet read the lastResort discussion in the documentation. That's deep in the advanced tutorial, I was getting tripped up by simple examples that I concocted from very simple cases, which can be on the fringes of actual usage. I wonder why "lastResort" differs from the built-in default.
I was playing with basicConfig because I wanted to experiment with formatting and level, and I managed to generate messages that seemed unrelated to formating I had specified.
For now it appears that after import logging
I can add logging.warning('')
and achieve what I want. I get the default format where I expect rather than lastResort format.
I prefer the default format that I get from the internal call to basicConfig. I can imagine the there will be a situation where I want the even simpler "last resort format".
History
Date
User
Action
Args
2022-04-11 14:59:03
admin
set
github: 78288
2018-07-13 20:03:39
Michael Kearney
set
messages: +
2018-07-13 09:09:50
vinay.sajip
set
status: open -> closed
resolution: not a bug
messages: +
stage: resolved
2018-07-13 09:02:11
xtreak
set
nosy: + xtreak
2018-07-13 04:02:11
ned.deily
set
nosy: + vinay.sajip
2018-07-13 00:25:05
Michael Kearney
create