diff options
author | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2015-10-17 12:58:19 (GMT) |
---|---|---|
committer | Vinay Sajip <vinay_sajip@yahoo.co.uk> | 2015-10-17 12:58:19 (GMT) |
commit | 4de9dae57dbcac5ac2243e56ad9b13e7a3a9d772 (patch) | |
tree | 1f203c4c6800fbf86f468366fd1cf9674d316250 /Doc | |
parent | edb9111d41edc9df3ac5727f8007c5d65f7e4bd3 (diff) | |
download | cpython-4de9dae57dbcac5ac2243e56ad9b13e7a3a9d772.zip cpython-4de9dae57dbcac5ac2243e56ad9b13e7a3a9d772.tar.gz cpython-4de9dae57dbcac5ac2243e56ad9b13e7a3a9d772.tar.bz2 |
Added entry to logging cookbook.
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/howto/logging-cookbook.rst | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/Doc/howto/logging-cookbook.rst b/Doc/howto/logging-cookbook.rst index addaea5..b89a501 100644 --- a/Doc/howto/logging-cookbook.rst +++ b/Doc/howto/logging-cookbook.rst @@ -2279,3 +2279,69 @@ You can of course use the conventional means of decoration:: @log_if_errors(logger) def foo(fail=False): ... + + +.. _utc-formatting: + +Formatting times using UTC (GMT) via configuration +-------------------------------------------------- + +Sometimes you want to format times using UTC, which can be done using a class +such as `UTCFormatter`, shown below:: + + import logging + import time + + class UTCFormatter(logging.Formatter): + converter = time.gmtime + +and you can then use the `UTCFormatter` in your code instead of +:class:`~logging.Formatter`. If you want to do that via configuration, you can +use the :func:`~logging.config.dictConfig` API with an approach illustrated by +the following complete example:: + + import logging + import logging.config + import time + + class UTCFormatter(logging.Formatter): + converter = time.gmtime + + LOGGING = { + 'version': 1, + 'disable_existing_loggers': False, + 'formatters': { + 'utc': { + '()': UTCFormatter, + 'format': '%(asctime)s %(message)s', + }, + 'local': { + 'format': '%(asctime)s %(message)s', + } + }, + 'handlers': { + 'console1': { + 'class': 'logging.StreamHandler', + 'formatter': 'utc', + }, + 'console2': { + 'class': 'logging.StreamHandler', + 'formatter': 'local', + }, + }, + 'root': { + 'handlers': ['console1', 'console2'], + } + } + + if __name__ == '__main__': + logging.config.dictConfig(LOGGING) + logging.warning('The local time is %s', time.asctime()) + +When this script is run, it should print something like:: + + 2015-10-17 12:53:29,501 The local time is Sat Oct 17 13:53:29 2015 + 2015-10-17 13:53:29,501 The local time is Sat Oct 17 13:53:29 2015 + +showing how the time is formatted both as local time and UTC, one for each +handler. |