Issue #9827: clarified LogRecord documentation.
diff --git a/Doc/library/logging.rst b/Doc/library/logging.rst
index e7af4e3..97480db 100644
--- a/Doc/library/logging.rst
+++ b/Doc/library/logging.rst
@@ -527,6 +527,7 @@
just "foo".
.. versionadded:: 3.1
+
The :class:`NullHandler` class was not present in previous versions, but is
now included, so that it need not be defined in library code.
@@ -736,7 +737,7 @@
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logging.warning("Protocol problem: %s", "connection reset", extra=d)
- would print something like ::
+ would print something like::
2006-02-08 22:20:02,165 192.168.0.1 fbloggs Protocol problem: connection reset
@@ -903,6 +904,7 @@
and 2.2.x, which do not include the :mod:`logging` package in the standard
library.
+.. _logger:
Logger Objects
--------------
@@ -1788,6 +1790,8 @@
the :meth:`makePickle` method and implementing your alternative there, as
well as adapting the above script to use your alternative serialization.
+.. _arbitrary-object-messages:
+
Using arbitrary objects as messages
-----------------------------------
@@ -2705,7 +2709,6 @@
specified, ``'%(message)s'`` is used. If no *datefmt* is specified, the
ISO8601 date format is used.
-
.. method:: format(record)
The record's attribute dictionary is used as the operand to a string
@@ -2781,32 +2784,70 @@
LogRecord Objects
-----------------
-:class:`LogRecord` instances are created every time something is logged. They
-contain all the information pertinent to the event being logged. The main
-information passed in is in msg and args, which are combined using msg % args to
-create the message field of the record. The record also includes information
-such as when the record was created, the source line where the logging call was
-made, and any exception information to be logged.
+:class:`LogRecord` instances are created automatically by the :class:`Logger`
+every time something is logged, and can be created manually via
+:func:`makeLogRecord` (for example, from a pickled event received over the
+wire).
.. class:: LogRecord(name, lvl, pathname, lineno, msg, args, exc_info, func=None)
- Returns an instance of :class:`LogRecord` initialized with interesting
- information. The *name* is the logger name; *lvl* is the numeric level;
- *pathname* is the absolute pathname of the source file in which the logging
- call was made; *lineno* is the line number in that file where the logging
- call is found; *msg* is the user-supplied message (a format string); *args*
- is the tuple which, together with *msg*, makes up the user message; and
- *exc_info* is the exception tuple obtained by calling :func:`sys.exc_info`
- (or :const:`None`, if no exception information is available). The *func* is
- the name of the function from which the logging call was made. If not
- specified, it defaults to ``None``.
+ Contains all the information pertinent to the event being logged.
+ The primary information is passed in :attr:`msg` and :attr:`args`, which
+ are combined using ``msg % args`` to create the :attr:`message` field of the
+ record.
+
+ .. attribute:: args
+
+ Tuple of arguments to be used in formatting :attr:`msg`.
+
+ .. attribute:: exc_info
+
+ Exception tuple (à la `sys.exc_info`) or `None` if no exception
+ information is availble.
+
+ .. attribute:: func
+
+ Name of the function of origin (i.e. in which the logging call was made).
+
+ .. attribute:: lineno
+
+ Line number in the source file of origin.
+
+ .. attribute:: lvl
+
+ Numeric logging level.
+
+ .. attribute:: message
+
+ Bound to the result of :meth:`getMessage` when
+ :meth:`Formatter.format(record)<Formatter.format>` is invoked.
+
+ .. attribute:: msg
+
+ User-supplied :ref:`format string<string-formatting>` or arbitrary object
+ (see :ref:`arbitrary-object-messages`) used in :meth:`getMessage`.
+
+ .. attribute:: name
+
+ Name of the logger that emitted the record.
+
+ .. attribute:: pathname
+
+ Absolute pathname of the source file of origin.
.. method:: getMessage()
Returns the message for this :class:`LogRecord` instance after merging any
- user-supplied arguments with the message.
+ user-supplied arguments with the message. If the user-supplied message
+ argument to the logging call is not a string, :func:`str` is called on it to
+ convert it to a string. This allows use of user-defined classes as
+ messages, whose ``__str__`` method can return the actual format string to
+ be used.
+
+ .. versionchanged:: 2.5
+ *func* was added.
.. _logger-adapter: