Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-43353: Document that logging.getLevelName() accepts string representation of logging level. #24693

Merged
merged 1 commit into from Mar 8, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
25 changes: 17 additions & 8 deletions Doc/library/logging.rst
Expand Up @@ -1113,18 +1113,27 @@ functions.

.. function:: getLevelName(level)

Returns the textual representation of logging level *level*. If the level is one
of the predefined levels :const:`CRITICAL`, :const:`ERROR`, :const:`WARNING`,
:const:`INFO` or :const:`DEBUG` then you get the corresponding string. If you
have associated levels with names using :func:`addLevelName` then the name you
have associated with *level* is returned. If a numeric value corresponding to one
of the defined levels is passed in, the corresponding string representation is
returned. Otherwise, the string 'Level %s' % level is returned.
Returns the textual or numeric representation of logging level *level*.

If *level* is one of the predefined levels :const:`CRITICAL`, :const:`ERROR`,
:const:`WARNING`, :const:`INFO` or :const:`DEBUG` then you get the
corresponding string. If you have associated levels with names using
:func:`addLevelName` then the name you have associated with *level* is
returned. If a numeric value corresponding to one of the defined levels is
passed in, the corresponding string representation is returned.

The *level* parameter also accepts a string representation of the level such
as 'INFO'. In such cases, this functions returns the corresponding numeric
value of the level.

If no matching numeric or string value is passed in, the string
'Level %s' % level is returned.

.. note:: Levels are internally integers (as they need to be compared in the
logging logic). This function is used to convert between an integer level
and the level name displayed in the formatted log output by means of the
``%(levelname)s`` format specifier (see :ref:`logrecord-attributes`).
``%(levelname)s`` format specifier (see :ref:`logrecord-attributes`), and
vice versa.

.. versionchanged:: 3.4
In Python versions earlier than 3.4, this function could also be passed a
Expand Down
8 changes: 6 additions & 2 deletions Lib/logging/__init__.py
Expand Up @@ -118,7 +118,7 @@

def getLevelName(level):
"""
Return the textual representation of logging level 'level'.
Return the textual or numeric representation of logging level 'level'.

If the level is one of the predefined levels (CRITICAL, ERROR, WARNING,
INFO, DEBUG) then you get the corresponding string. If you have
Expand All @@ -128,7 +128,11 @@ def getLevelName(level):
If a numeric value corresponding to one of the defined levels is passed
in, the corresponding string representation is returned.

Otherwise, the string "Level %s" % level is returned.
If a string representation of the level is passed in, the corresponding
numeric value is returned.

If no matching numeric or string value is passed in, the string
'Level %s' % level is returned.
"""
# See Issues #22386, #27937 and #29220 for why it's this way
result = _levelToName.get(level)
Expand Down