class logging.Formatter(fmt=None, datefmt=None, style='%')
Returns a new instance of the Formatter
class. The instance is initialized with a format string for the message as a whole, as well as a format string for the date/time portion of a message. If no fmt is specified, '%(message)s'
is used. If no datefmt is specified, the ISO8601 date format is used.
The style parameter can be one of ‘%’, ‘{‘ or ‘$’ and determines how the format string will be merged with its data: using one of %-formatting, str.format()
or string.Template
. See Using particular formatting styles throughout your application for more information on using {- and $-formatting for log messages.
Changed in version 3.2: The style parameter was added.
-
format(record)
-
The record’s attribute dictionary is used as the operand to a string formatting operation. Returns the resulting string. Before formatting the dictionary, a couple of preparatory steps are carried out. The message attribute of the record is computed using msg % args. If the formatting string contains
'(asctime)'
,formatTime()
is called to format the event time. If there is exception information, it is formatted usingformatException()
and appended to the message. Note that the formatted exception information is cached in attribute exc_text. This is useful because the exception information can be pickled and sent across the wire, but you should be careful if you have more than oneFormatter
subclass which customizes the formatting of exception information. In this case, you will have to clear the cached value after a formatter has done its formatting, so that the next formatter to handle the event doesn’t use the cached value but recalculates it afresh.If stack information is available, it’s appended after the exception information, using
formatStack()
to transform it if necessary.
-
formatTime(record, datefmt=None)
-
This method should be called from
format()
by a formatter which wants to make use of a formatted time. This method can be overridden in formatters to provide for any specific requirement, but the basic behavior is as follows: if datefmt (a string) is specified, it is used withtime.strftime()
to format the creation time of the record. Otherwise, the ISO8601 format is used. The resulting string is returned.This function uses a user-configurable function to convert the creation time to a tuple. By default,
time.localtime()
is used; to change this for a particular formatter instance, set theconverter
attribute to a function with the same signature astime.localtime()
ortime.gmtime()
. To change it for all formatters, for example if you want all logging times to be shown in GMT, set theconverter
attribute in theFormatter
class.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 aredefault_time_format
(for the strptime format string) anddefault_msec_format
(for appending the millisecond value).
-
formatException(exc_info)
-
Formats the specified exception information (a standard exception tuple as returned by
sys.exc_info()
) as a string. This default implementation just usestraceback.print_exception()
. The resulting string is returned.
-
formatStack(stack_info)
-
Formats the specified stack information (a string as returned by
traceback.print_stack()
, but with the last newline removed) as a string. This default implementation just returns the input value.
Please login to continue.