![]() |
logging time format millisecond precision decimalsign
I use this formatter in logging:
formatter = logging.Formatter(fmt='%(asctime)s \t %(name)s \t %(levelname)s \t %(message)s') Sample output: 2012-07-19 21:34:58,382 root INFO Removed - C:\Users\ZDoor\Documents The time stamp has millisecond precision but the decimal separator is a comma. Can I change the comma (,) into a period (.) and if so how? Thanks in advance, Alex van der Spek |
Re: logging time format millisecond precision decimalsign
Alex van der Spek wrote:
> I use this formatter in logging: > > formatter = logging.Formatter(fmt='%(asctime)s \t %(name)s \t > %(levelname)s \t %(message)s') > > Sample output: > > 2012-07-19 21:34:58,382 root INFO Removed - C:\Users\ZDoor\Documents > > The time stamp has millisecond precision but the decimal separator is a > comma. > > Can I change the comma (,) into a period (.) and if so how? I think you have to subclass Formatter.formatTime(). Here's a monkey- patching session to get you started: >>> import logging >>> logging.basicConfig(format="%(asctime)s") >>> logging.getLogger().error("foo") 2012-07-20 16:17:39,364 >>> _formatTime = logging.Formatter.formatTime >>> def formatTime(*args): .... return _formatTime(*args).replace(",", ".") .... >>> logging.Formatter.formatTime = formatTime >>> logging.getLogger().error("foo") 2012-07-20 16:20:20.838 See also http://docs.python.org/dev/py3k/libr...ter.formatTime """ Changed in version 3.3: Previously, the default ISO 8601 format was hard- coded as in this example: 2010-09-06 22:38:15,292 where the part before the comma is handled by a strptime format string ('%Y-%m-%d %H:%M:%S'), and the part after the comma is a millisecond value. Because strptime does not have a format placeholder for milliseconds, the millisecond value is appended using another format string, '%s,%03d' – and both of these format strings have been hardcoded into this method. With the change, these strings are defined as class-level attributes which can be overridden at the instance level when desired. The names of the attributes are default_time_format (for the strptime format string) and default_msec_format (for appending the millisecond value). """ |
Re: logging time format millisecond precision decimalsign
"Alex van der Spek" <zdoor@xs4all.nl> writes:
> I use this formatter in logging: > > formatter = logging.Formatter(fmt='%(asctime)s \t %(name)s \t %(levelname)s > \t %(message)s') > > Sample output: > > 2012-07-19 21:34:58,382 root INFO Removed - C:\Users\ZDoor\Documents > > The time stamp has millisecond precision but the decimal separator is a > comma. > > Can I change the comma (,) into a period (.) and if so how? I do it by: 1. Replacing the default date format string to exclude ms. 2. Including %(msecs)03d in the format string where appropriate. Using 'd' instead of s truncates rather than shows the full float value. So in your case, I believe that changing your formatter creation to: formatter = logging.Formatter(fmt='%(asctime)s.%(msecs)03d \t %(name)s \t %(levelname)s \t %(message)s', '%Y-%m-%d %H:%M:%S') should work. This uses the same date format as the default, but without ms, though of course you could also opt to make any other date format you prefer. -- David |
| All times are GMT. The time now is 01:33 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.