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:
Bruno Cauet 2015-02-10 17:13:15 +01:00
parent 327b62b610
commit f1e13cf886
6 changed files with 34 additions and 19 deletions

View file

@ -43,7 +43,7 @@ pluginpath: []
threaded: yes
timeout: 5.0
per_disc_numbering: no
verbose: no
verbose: 0
terminal_encoding: utf8
original_date: no
id3v23: no

View file

@ -112,9 +112,8 @@ class BeetsPlugin(object):
def wrapper(*args, **kwargs):
assert self._log.level == logging.NOTSET
log_level = base_log_level
if beets.config['verbose'].get(bool):
log_level -= 10
verbosity = beets.config['verbose'].get(int)
log_level = max(logging.DEBUG, base_log_level - 10 * verbosity)
self._log.setLevel(log_level)
try:

View file

@ -858,7 +858,7 @@ def _configure(options):
config.set_args(options)
# Configure the logger.
if config['verbose'].get(bool):
if config['verbose'].get(int):
log.setLevel(logging.DEBUG)
else:
log.setLevel(logging.INFO)
@ -917,7 +917,7 @@ def _raw_main(args, lib=None):
help='library database file to use')
parser.add_option('-d', '--directory', dest='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')
parser.add_option('-c', '--config', dest='config',
help='path to configuration file')

View file

@ -167,7 +167,7 @@ class TestHelper(object):
self.config.read()
self.config['plugins'] = []
self.config['verbose'] = True
self.config['verbose'] = 1
self.config['ui']['color'] = False
self.config['threaded'] = False

View file

@ -78,37 +78,45 @@ class LoggingLevelTest(unittest.TestCase, helper.TestHelper):
sys.modules.pop('beetsplug.dummy')
def test_command_logging(self):
self.config['verbose'] = False
self.config['verbose'] = 0
with helper.capture_log() as logs:
self.run_command('dummy')
self.assertIn('dummy: warning cmd', logs)
self.assertIn('dummy: info cmd', logs)
self.assertNotIn('dummy: debug cmd', logs)
self.config['verbose'] = True
with helper.capture_log() as logs:
self.run_command('dummy')
self.assertIn('dummy: warning cmd', logs)
self.assertIn('dummy: info cmd', logs)
self.assertIn('dummy: debug cmd', logs)
for level in (1, 2):
self.config['verbose'] = level
with helper.capture_log() as logs:
self.run_command('dummy')
self.assertIn('dummy: warning cmd', logs)
self.assertIn('dummy: info cmd', logs)
self.assertIn('dummy: debug cmd', logs)
def test_listener_logging(self):
self.config['verbose'] = False
self.config['verbose'] = 0
with helper.capture_log() as logs:
plugins.send('dummy_event')
self.assertIn('dummy: warning listener', logs)
self.assertNotIn('dummy: info listener', logs)
self.assertNotIn('dummy: debug listener', logs)
self.config['verbose'] = True
self.config['verbose'] = 1
with helper.capture_log() as logs:
plugins.send('dummy_event')
self.assertIn('dummy: warning listener', logs)
self.assertIn('dummy: info 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):
self.config['verbose'] = False
self.config['verbose'] = 0
with helper.capture_log() as logs:
importer = self.create_importer()
importer.run()
@ -116,7 +124,7 @@ class LoggingLevelTest(unittest.TestCase, helper.TestHelper):
self.assertNotIn('dummy: info import_stage', logs)
self.assertNotIn('dummy: debug import_stage', logs)
self.config['verbose'] = True
self.config['verbose'] = 1
with helper.capture_log() as logs:
importer = self.create_importer()
importer.run()
@ -124,6 +132,14 @@ class LoggingLevelTest(unittest.TestCase, helper.TestHelper):
self.assertIn('dummy: info 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():
return unittest.TestLoader().loadTestsFromName(__name__)

View file

@ -17,7 +17,7 @@ class ArgumentsMock(object):
def __init__(self, mode, show_failures):
self.mode = mode
self.show_failures = show_failures
self.verbose = True
self.verbose = 1
def _params(url):