From 4ed315ae6674e710c5374bda3660ede3a5f0a95c Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Wed, 20 Oct 2004 08:39:40 +0000 Subject: Changed handling of args in LogRecord.__init__. --- Lib/logging/__init__.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index e9bb4d9..579c2c4 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -36,8 +36,8 @@ except ImportError: __author__ = "Vinay Sajip " __status__ = "beta" -__version__ = "0.4.9.5" -__date__ = "02 October 2004" +__version__ = "0.4.9.6" +__date__ = "20 October 2004" #--------------------------------------------------------------------------- # Miscellaneous module data @@ -191,6 +191,21 @@ class LogRecord: ct = time.time() self.name = name self.msg = msg + # + # The following statement allows passing of a dictionary as a sole + # argument, so that you can do something like + # logging.debug("a %(a)d b %(b)s", {'a':1, 'b':2}) + # Suggested by Stefan Behnel. + # Note that without the test for args[0], we get a problem because + # during formatting, we test to see if the arg is present using + # 'if self.args:'. If the event being logged is e.g. 'Value is %d' + # and if the passed arg fails 'if self.args:' then no formatting + # is done. For example, logger.warn('Value is %d', 0) would log + # 'Value is %d' instead of 'Value is 0'. + # For the use case of passing a dictionary, this should not be a + # problem. + if args and (len(args) == 1) and args[0]: + args = args[0] self.args = args self.levelname = getLevelName(level) self.levelno = level -- cgit v0.12