Commit 4039aff8 authored by Vinay Sajip's avatar Vinay Sajip

Issue #9827: clarified LogRecord documentation.

parent bd88802c
...@@ -527,6 +527,7 @@ libraries, then the logger name specified can be "orgname.foo" rather than ...@@ -527,6 +527,7 @@ libraries, then the logger name specified can be "orgname.foo" rather than
just "foo". just "foo".
.. versionadded:: 3.1 .. versionadded:: 3.1
The :class:`NullHandler` class was not present in previous versions, but is The :class:`NullHandler` class was not present in previous versions, but is
now included, so that it need not be defined in library code. now included, so that it need not be defined in library code.
...@@ -736,7 +737,7 @@ functions. ...@@ -736,7 +737,7 @@ functions.
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'} d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logging.warning("Protocol problem: %s", "connection reset", extra=d) 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 2006-02-08 22:20:02,165 192.168.0.1 fbloggs Protocol problem: connection reset
...@@ -903,6 +904,7 @@ functions. ...@@ -903,6 +904,7 @@ functions.
and 2.2.x, which do not include the :mod:`logging` package in the standard and 2.2.x, which do not include the :mod:`logging` package in the standard
library. library.
.. _logger:
Logger Objects Logger Objects
-------------- --------------
...@@ -1788,6 +1790,8 @@ these affect you, you can use an alternative serialization scheme by overriding ...@@ -1788,6 +1790,8 @@ these affect you, you can use an alternative serialization scheme by overriding
the :meth:`makePickle` method and implementing your alternative there, as the :meth:`makePickle` method and implementing your alternative there, as
well as adapting the above script to use your alternative serialization. well as adapting the above script to use your alternative serialization.
.. _arbitrary-object-messages:
Using arbitrary objects as messages Using arbitrary objects as messages
----------------------------------- -----------------------------------
...@@ -2705,7 +2709,6 @@ Currently, the useful mapping keys in a :class:`LogRecord` are: ...@@ -2705,7 +2709,6 @@ Currently, the useful mapping keys in a :class:`LogRecord` are:
specified, ``'%(message)s'`` is used. If no *datefmt* is specified, the specified, ``'%(message)s'`` is used. If no *datefmt* is specified, the
ISO8601 date format is used. ISO8601 date format is used.
.. method:: format(record) .. method:: format(record)
The record's attribute dictionary is used as the operand to a string The record's attribute dictionary is used as the operand to a string
...@@ -2781,32 +2784,70 @@ been applied to those descendant loggers. ...@@ -2781,32 +2784,70 @@ been applied to those descendant loggers.
LogRecord Objects LogRecord Objects
----------------- -----------------
:class:`LogRecord` instances are created every time something is logged. They :class:`LogRecord` instances are created automatically by the :class:`Logger`
contain all the information pertinent to the event being logged. The main every time something is logged, and can be created manually via
information passed in is in msg and args, which are combined using msg % args to :func:`makeLogRecord` (for example, from a pickled event received over the
create the message field of the record. The record also includes information wire).
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(name, lvl, pathname, lineno, msg, args, exc_info, func=None) .. class:: LogRecord(name, lvl, pathname, lineno, msg, args, exc_info, func=None)
Returns an instance of :class:`LogRecord` initialized with interesting Contains all the information pertinent to the event being logged.
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 The primary information is passed in :attr:`msg` and :attr:`args`, which
call was made; *lineno* is the line number in that file where the logging are combined using ``msg % args`` to create the :attr:`message` field of the
call is found; *msg* is the user-supplied message (a format string); *args* record.
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` .. attribute:: args
(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 Tuple of arguments to be used in formatting :attr:`msg`.
specified, it defaults to ``None``.
.. 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() .. method:: getMessage()
Returns the message for this :class:`LogRecord` instance after merging any 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: .. _logger-adapter:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment