mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 16:42:42 +01:00
Offer verbose and very verbose modes
'verbose' is now an int and not a boolean. '-v' is level 1, '-vv' level 2. In the configuration it can be set with 'verbose: 1' or 'verbose: 2'. Improve #1244: auditing current log levels of plugins remains.
This commit is contained in:
parent
327b62b610
commit
f1e13cf886
6 changed files with 34 additions and 19 deletions
|
|
@ -43,7 +43,7 @@ pluginpath: []
|
||||||
threaded: yes
|
threaded: yes
|
||||||
timeout: 5.0
|
timeout: 5.0
|
||||||
per_disc_numbering: no
|
per_disc_numbering: no
|
||||||
verbose: no
|
verbose: 0
|
||||||
terminal_encoding: utf8
|
terminal_encoding: utf8
|
||||||
original_date: no
|
original_date: no
|
||||||
id3v23: no
|
id3v23: no
|
||||||
|
|
|
||||||
|
|
@ -112,9 +112,8 @@ class BeetsPlugin(object):
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
assert self._log.level == logging.NOTSET
|
assert self._log.level == logging.NOTSET
|
||||||
|
|
||||||
log_level = base_log_level
|
verbosity = beets.config['verbose'].get(int)
|
||||||
if beets.config['verbose'].get(bool):
|
log_level = max(logging.DEBUG, base_log_level - 10 * verbosity)
|
||||||
log_level -= 10
|
|
||||||
self._log.setLevel(log_level)
|
self._log.setLevel(log_level)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
|
|
@ -858,7 +858,7 @@ def _configure(options):
|
||||||
config.set_args(options)
|
config.set_args(options)
|
||||||
|
|
||||||
# Configure the logger.
|
# Configure the logger.
|
||||||
if config['verbose'].get(bool):
|
if config['verbose'].get(int):
|
||||||
log.setLevel(logging.DEBUG)
|
log.setLevel(logging.DEBUG)
|
||||||
else:
|
else:
|
||||||
log.setLevel(logging.INFO)
|
log.setLevel(logging.INFO)
|
||||||
|
|
@ -917,7 +917,7 @@ def _raw_main(args, lib=None):
|
||||||
help='library database file to use')
|
help='library database file to use')
|
||||||
parser.add_option('-d', '--directory', dest='directory',
|
parser.add_option('-d', '--directory', dest='directory',
|
||||||
help="destination music directory")
|
help="destination music directory")
|
||||||
parser.add_option('-v', '--verbose', dest='verbose', action='store_true',
|
parser.add_option('-v', '--verbose', dest='verbose', action='count',
|
||||||
help='print debugging information')
|
help='print debugging information')
|
||||||
parser.add_option('-c', '--config', dest='config',
|
parser.add_option('-c', '--config', dest='config',
|
||||||
help='path to configuration file')
|
help='path to configuration file')
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ class TestHelper(object):
|
||||||
self.config.read()
|
self.config.read()
|
||||||
|
|
||||||
self.config['plugins'] = []
|
self.config['plugins'] = []
|
||||||
self.config['verbose'] = True
|
self.config['verbose'] = 1
|
||||||
self.config['ui']['color'] = False
|
self.config['ui']['color'] = False
|
||||||
self.config['threaded'] = False
|
self.config['threaded'] = False
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,37 +78,45 @@ class LoggingLevelTest(unittest.TestCase, helper.TestHelper):
|
||||||
sys.modules.pop('beetsplug.dummy')
|
sys.modules.pop('beetsplug.dummy')
|
||||||
|
|
||||||
def test_command_logging(self):
|
def test_command_logging(self):
|
||||||
self.config['verbose'] = False
|
self.config['verbose'] = 0
|
||||||
with helper.capture_log() as logs:
|
with helper.capture_log() as logs:
|
||||||
self.run_command('dummy')
|
self.run_command('dummy')
|
||||||
self.assertIn('dummy: warning cmd', logs)
|
self.assertIn('dummy: warning cmd', logs)
|
||||||
self.assertIn('dummy: info cmd', logs)
|
self.assertIn('dummy: info cmd', logs)
|
||||||
self.assertNotIn('dummy: debug cmd', logs)
|
self.assertNotIn('dummy: debug cmd', logs)
|
||||||
|
|
||||||
self.config['verbose'] = True
|
for level in (1, 2):
|
||||||
with helper.capture_log() as logs:
|
self.config['verbose'] = level
|
||||||
self.run_command('dummy')
|
with helper.capture_log() as logs:
|
||||||
self.assertIn('dummy: warning cmd', logs)
|
self.run_command('dummy')
|
||||||
self.assertIn('dummy: info cmd', logs)
|
self.assertIn('dummy: warning cmd', logs)
|
||||||
self.assertIn('dummy: debug cmd', logs)
|
self.assertIn('dummy: info cmd', logs)
|
||||||
|
self.assertIn('dummy: debug cmd', logs)
|
||||||
|
|
||||||
def test_listener_logging(self):
|
def test_listener_logging(self):
|
||||||
self.config['verbose'] = False
|
self.config['verbose'] = 0
|
||||||
with helper.capture_log() as logs:
|
with helper.capture_log() as logs:
|
||||||
plugins.send('dummy_event')
|
plugins.send('dummy_event')
|
||||||
self.assertIn('dummy: warning listener', logs)
|
self.assertIn('dummy: warning listener', logs)
|
||||||
self.assertNotIn('dummy: info listener', logs)
|
self.assertNotIn('dummy: info listener', logs)
|
||||||
self.assertNotIn('dummy: debug listener', logs)
|
self.assertNotIn('dummy: debug listener', logs)
|
||||||
|
|
||||||
self.config['verbose'] = True
|
self.config['verbose'] = 1
|
||||||
with helper.capture_log() as logs:
|
with helper.capture_log() as logs:
|
||||||
plugins.send('dummy_event')
|
plugins.send('dummy_event')
|
||||||
self.assertIn('dummy: warning listener', logs)
|
self.assertIn('dummy: warning listener', logs)
|
||||||
self.assertIn('dummy: info listener', logs)
|
self.assertIn('dummy: info listener', logs)
|
||||||
self.assertNotIn('dummy: debug listener', logs)
|
self.assertNotIn('dummy: debug listener', logs)
|
||||||
|
|
||||||
|
self.config['verbose'] = 2
|
||||||
|
with helper.capture_log() as logs:
|
||||||
|
plugins.send('dummy_event')
|
||||||
|
self.assertIn('dummy: warning listener', logs)
|
||||||
|
self.assertIn('dummy: info listener', logs)
|
||||||
|
self.assertIn('dummy: debug listener', logs)
|
||||||
|
|
||||||
def test_import_stage_logging(self):
|
def test_import_stage_logging(self):
|
||||||
self.config['verbose'] = False
|
self.config['verbose'] = 0
|
||||||
with helper.capture_log() as logs:
|
with helper.capture_log() as logs:
|
||||||
importer = self.create_importer()
|
importer = self.create_importer()
|
||||||
importer.run()
|
importer.run()
|
||||||
|
|
@ -116,7 +124,7 @@ class LoggingLevelTest(unittest.TestCase, helper.TestHelper):
|
||||||
self.assertNotIn('dummy: info import_stage', logs)
|
self.assertNotIn('dummy: info import_stage', logs)
|
||||||
self.assertNotIn('dummy: debug import_stage', logs)
|
self.assertNotIn('dummy: debug import_stage', logs)
|
||||||
|
|
||||||
self.config['verbose'] = True
|
self.config['verbose'] = 1
|
||||||
with helper.capture_log() as logs:
|
with helper.capture_log() as logs:
|
||||||
importer = self.create_importer()
|
importer = self.create_importer()
|
||||||
importer.run()
|
importer.run()
|
||||||
|
|
@ -124,6 +132,14 @@ class LoggingLevelTest(unittest.TestCase, helper.TestHelper):
|
||||||
self.assertIn('dummy: info import_stage', logs)
|
self.assertIn('dummy: info import_stage', logs)
|
||||||
self.assertNotIn('dummy: debug import_stage', logs)
|
self.assertNotIn('dummy: debug import_stage', logs)
|
||||||
|
|
||||||
|
self.config['verbose'] = 2
|
||||||
|
with helper.capture_log() as logs:
|
||||||
|
importer = self.create_importer()
|
||||||
|
importer.run()
|
||||||
|
self.assertIn('dummy: warning import_stage', logs)
|
||||||
|
self.assertIn('dummy: info import_stage', logs)
|
||||||
|
self.assertIn('dummy: debug import_stage', logs)
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
return unittest.TestLoader().loadTestsFromName(__name__)
|
return unittest.TestLoader().loadTestsFromName(__name__)
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ class ArgumentsMock(object):
|
||||||
def __init__(self, mode, show_failures):
|
def __init__(self, mode, show_failures):
|
||||||
self.mode = mode
|
self.mode = mode
|
||||||
self.show_failures = show_failures
|
self.show_failures = show_failures
|
||||||
self.verbose = True
|
self.verbose = 1
|
||||||
|
|
||||||
|
|
||||||
def _params(url):
|
def _params(url):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue