From f871ef9e2123ca538c632f922e4efdfc2d12834c Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Sun, 11 Jan 2015 15:00:20 -0800 Subject: [PATCH] Verbosity affects plugins (#1208) This restores the -v flag affecting plugins. By default, plugin loggers use the NOTSET level, which just reuses the base `beets` logger level. The level is only auto-adjusted for the importer when not in verbose mode. --- beets/plugins.py | 17 +++++++++++++---- beetsplug/beatport.py | 2 +- beetsplug/info.py | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/beets/plugins.py b/beets/plugins.py index ac0025288..2ae9090e4 100755 --- a/beets/plugins.py +++ b/beets/plugins.py @@ -64,7 +64,7 @@ class BeetsPlugin(object): logger_name = '{0}.{1}'.format('beets', self.name) self._log = logging.getLogger(logger_name) - self._log.setLevel(logging.INFO) + self._log.setLevel(logging.NOTSET) # Use `beets` logger level. def commands(self): """Should return a list of beets.ui.Subcommand objects for @@ -84,12 +84,21 @@ class BeetsPlugin(object): for import_stage in self.import_stages] def _set_log_level(self, log_level, func): + """Wrap `func` to temporarily set this plugin's logger level to + `log_level` (and restore it after the function returns). + + The level is *not* adjusted when beets is in verbose + mode---i.e., the plugin logger continues to delegate to the base + beets logger. + """ @wraps(func) def wrapper(*args, **kwargs): - old_log_level = self._log.getEffectiveLevel() - self._log.setLevel(log_level) + if not beets.config['verbose']: + old_log_level = self._log.level + self._log.setLevel(log_level) result = func(*args, **kwargs) - self._log.setLevel(old_log_level) + if not beets.config['verbose']: + self._log.setLevel(old_log_level) return result return wrapper diff --git a/beetsplug/beatport.py b/beetsplug/beatport.py index 5c116455f..de71562a9 100644 --- a/beetsplug/beatport.py +++ b/beetsplug/beatport.py @@ -191,7 +191,7 @@ class BeatportPlugin(BeetsPlugin): try: return self._get_releases(query) except BeatportAPIError as e: - self._log.debug(u'Beatport API Error: {0} (query: {1})', e, query) + self._log.debug(u'API Error: {0} (query: {1})', e, query) return [] def item_candidates(self, item, artist, title): diff --git a/beetsplug/info.py b/beetsplug/info.py index fc7d05f38..27aeabf0f 100644 --- a/beetsplug/info.py +++ b/beetsplug/info.py @@ -131,7 +131,7 @@ class InfoPlugin(BeetsPlugin): try: data = data_emitter() except mediafile.UnreadableFileError as ex: - self._log.error(u'cannot read file: {0}', ex.message) + self._log.error(u'cannot read file: {0}', ex) continue if opts.summarize: