Merge pull request #979 from jodal/feature/trace-logging
Add support for TRACE level logging
This commit is contained in:
commit
69d3f90628
@ -26,6 +26,21 @@ v0.20.0 (UNRELEASED)
|
||||
- Make the ``mopidy`` command print a friendly error message if the
|
||||
:mod:`gobject` Python module cannot be imported. (Fixes: :issue:`836`)
|
||||
|
||||
- Add support for repeating the :cmdoption:`-v <mopidy -v>` argument four times
|
||||
to set the log level for all loggers to the lowest possible value, including
|
||||
log records at levels lover than ``DEBUG`` too.
|
||||
|
||||
**Configuration**
|
||||
|
||||
- Add support for the log level value ``all`` to the loglevels configurations.
|
||||
This can be used to show absolutely all log records, including those at
|
||||
custom levels below ``DEBUG``.
|
||||
|
||||
**Logging**
|
||||
|
||||
- Add custom log level ``TRACE`` (numerical level 5), which can be used by
|
||||
Mopidy and extensions to log at an even more detailed level than ``DEBUG``.
|
||||
|
||||
**Local backend**
|
||||
|
||||
- Add cover URL to all scanned files with MusicBrainz album IDs. (Fixes:
|
||||
@ -50,7 +65,7 @@ v0.20.0 (UNRELEASED)
|
||||
|
||||
- Enable browsing of artist references, in addition to albums and playlists.
|
||||
(PR: :issue:`884`)
|
||||
|
||||
|
||||
- Share a single mapping between names and URIs across all MPD sessions. (Fixes:
|
||||
:issue:`934`, PR: :issue:`968`)
|
||||
|
||||
|
||||
@ -200,8 +200,8 @@ class List(ConfigValue):
|
||||
class LogLevel(ConfigValue):
|
||||
"""Log level value.
|
||||
|
||||
Expects one of ``critical``, ``error``, ``warning``, ``info``, ``debug``
|
||||
with any casing.
|
||||
Expects one of ``critical``, ``error``, ``warning``, ``info``, ``debug``,
|
||||
or ``all``, with any casing.
|
||||
"""
|
||||
levels = {
|
||||
b'critical': logging.CRITICAL,
|
||||
@ -209,6 +209,7 @@ class LogLevel(ConfigValue):
|
||||
b'warning': logging.WARNING,
|
||||
b'info': logging.INFO,
|
||||
b'debug': logging.DEBUG,
|
||||
b'all': logging.NOTSET,
|
||||
}
|
||||
|
||||
def deserialize(self, value):
|
||||
|
||||
@ -12,8 +12,12 @@ LOG_LEVELS = {
|
||||
1: dict(root=logging.WARNING, mopidy=logging.DEBUG),
|
||||
2: dict(root=logging.INFO, mopidy=logging.DEBUG),
|
||||
3: dict(root=logging.DEBUG, mopidy=logging.DEBUG),
|
||||
4: dict(root=logging.NOTSET, mopidy=logging.NOTSET),
|
||||
}
|
||||
|
||||
# Custom log level which has even lower priority than DEBUG
|
||||
TRACE_LOG_LEVEL = 5
|
||||
|
||||
|
||||
class DelayedHandler(logging.Handler):
|
||||
def __init__(self):
|
||||
@ -42,6 +46,8 @@ def bootstrap_delayed_logging():
|
||||
|
||||
|
||||
def setup_logging(config, verbosity_level, save_debug_log):
|
||||
logging.addLevelName(TRACE_LOG_LEVEL, 'TRACE')
|
||||
|
||||
logging.captureWarnings(True)
|
||||
|
||||
if config['logging']['config_file']:
|
||||
@ -137,6 +143,7 @@ class ColorizingStreamHandler(logging.StreamHandler):
|
||||
|
||||
# Map logging levels to (background, foreground, bold/intense)
|
||||
level_map = {
|
||||
TRACE_LOG_LEVEL: (None, 'blue', False),
|
||||
logging.DEBUG: (None, 'blue', False),
|
||||
logging.INFO: (None, 'white', False),
|
||||
logging.WARNING: (None, 'yellow', False),
|
||||
|
||||
@ -281,11 +281,14 @@ class ListTest(unittest.TestCase):
|
||||
|
||||
|
||||
class LogLevelTest(unittest.TestCase):
|
||||
levels = {'critical': logging.CRITICAL,
|
||||
'error': logging.ERROR,
|
||||
'warning': logging.WARNING,
|
||||
'info': logging.INFO,
|
||||
'debug': logging.DEBUG}
|
||||
levels = {
|
||||
'critical': logging.CRITICAL,
|
||||
'error': logging.ERROR,
|
||||
'warning': logging.WARNING,
|
||||
'info': logging.INFO,
|
||||
'debug': logging.DEBUG,
|
||||
'all': logging.NOTSET,
|
||||
}
|
||||
|
||||
def test_deserialize_conversion_success(self):
|
||||
value = types.LogLevel()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user