[ python-Feature Requests-1006786 ] extend strptime to understand logging timestamps
SourceForge.net
noreply at sourceforge.net
Thu Aug 24 03:15:29 CEST 2006
Feature Requests item #1006786, was opened at 2004-08-10 11:59
Message generated for change (Comment added) made by bcannon
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=355470&aid=1006786&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: None
>Status: Closed
>Resolution: Rejected
Priority: 5
Submitted By: Skip Montanaro (montanaro)
Assigned to: Brett Cannon (bcannon)
Summary: extend strptime to understand logging timestamps
Initial Comment:
The default timestamp format used by the logging module
appends
a comma followed by a three-digit value representing
milliseconds,
e.g.:
2004-08-10 08:21:20,380 DEBUG <mytag> log message here
It would be nice if time.strptime() grokked this
specification for
the seconds in a timestamp so that applications which
want to
analyze log files can do so more easily. One
possibility is to
add a %s format specifier which recognizes NN,MMM as a
floating point value containing fractional seconds with
a comma
as the "decimal point".
Attached is a simple patch. I chose %s as the format
sequence
since it is related to %S.
----------------------------------------------------------------------
>Comment By: Brett Cannon (bcannon)
Date: 2006-08-23 18:15
Message:
Logged In: YES
user_id=357491
Closing as rejected since this is not going to happen within
strptime itself.
----------------------------------------------------------------------
Comment By: Brett Cannon (bcannon)
Date: 2004-08-11 11:17
Message:
Logged In: YES
user_id=357491
Jim is right; dateFormat() in the Formatter class in Lib/logging/
__init__.py seems to handle formatting of timestamps. Now looking at
the code it seems to store the format in self.datefmt, but it is set to
None by default. Then in dateFormat(), if self.datefmt is None it uses
the default format.
The problem is that the millisecond part of the timestamp is not
supported by time tuples. strftime doesn't even support it (if you look
at timeFormat(), it kind of cheats and passes everything *but* the
millisecond time to strftime and then just tacks on the millisecond
stamp) so it seems a little off to add support just in strptime. Kind of
too bad since it means that there is no way to actually construct the
default timestamp yourself; timeFormat, if given a value other than None
just passes the format string through strftime.
And look at datetime. It supports *microsecond* values in its time class
and strftime can't support that either. So now we have two places in the
stdlib where they use stuff that strftime (and thus strptime) can't
support. And of course the logging module doesn't use datetime since it
is keeping 1.5.2 compatibility, so we can't solve all our problems with
just a fix for datetime or by subclassing stuff in _strptime and coming up
with a custom strptime for the logging module.
So honestly I don't know what a good solution would be since not having
symmetry with strftime is not acceptable. I can only think of having a
small wrapper function in the logging module that handles the
millisecond part and passes the rest through strptime.
----------------------------------------------------------------------
Comment By: Jim Jewett (jimjjewett)
Date: 2004-08-11 08:59
Message:
Logged In: YES
user_id=764593
The format changes; "##,###" is just the default.
It is based on an ISO recommendation, including the use of ","
rather than "." to indicate a decimal point.
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2004-08-10 20:22
Message:
Logged In: YES
user_id=44345
Whatever works. I hope we don't need a PEP for this. One way
or the other I think it would be great if strptime can grok the
logging module's timestamp. I haven't looked carefully at it
to see if its timestamp format is variable or fixed. I suppose
that will have a lot to do with how the parsing problem is
solved in _strptime.
----------------------------------------------------------------------
Comment By: Brett Cannon (bcannon)
Date: 2004-08-10 18:43
Message:
Logged In: YES
user_id=357491
Is this the best solution, or would it be better to just have a specific
logging module directive (either in the logging package or in strptime)
that recognized the whole string? If that format *never* changes, then
we could just simplify it by having a single directive to make life easier
for everyone involved.
If we are going to compromise on adding a special directive for the
logging module might as well go all the way, right?
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=355470&aid=1006786&group_id=5470
More information about the Python-bugs-list
mailing list