[PATCH v2 1/2] parsearchive: Fix logging

Stephen Finucane stephen at that.guru
Fri Sep 21 06:58:35 AEST 2018


We should use a counter normally, avoid using the counter and emit logs
when more detailed output is requested, and emit nothing when no output
is requested.

In addition, the default logging level for the parser module is set to
'WARNING' to make it less chatty.

Signed-off-by: Stephen Finucane <stephen at that.guru>
---
v2:
- Set 'WARNING' level logging by default for all parsing activities
- Make more use of loggers rather than stdout
---
 patchwork/management/commands/parsearchive.py | 26 ++++++++++++++++---
 patchwork/settings/base.py                    |  6 ++---
 2 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/patchwork/management/commands/parsearchive.py b/patchwork/management/commands/parsearchive.py
index 96f64fa7..b4d8bcce 100644
--- a/patchwork/management/commands/parsearchive.py
+++ b/patchwork/management/commands/parsearchive.py
@@ -37,10 +37,24 @@ class Command(BaseCommand):
         dropped = 0
         errors = 0
 
+        verbosity = int(options['verbosity'])
+        if not verbosity:
+            level = logging.CRITICAL
+        elif verbosity == 1:
+            level = logging.ERROR
+        elif verbosity == 2:
+            level = logging.INFO
+        else:  # verbosity == 3
+            level = logging.DEBUG
+
+        if level:
+            logger.setLevel(level)
+            logging.getLogger('patchwork.parser').setLevel(level)
+
         # TODO(stephenfin): Support passing via stdin
         path = args and args[0] or options['infile']
         if not os.path.exists(path):
-            self.stdout.write('Invalid path: %s' % path)
+            logger.error('Invalid path: %s', path)
             sys.exit(1)
 
         # assume if <infile> is a directory, then we're passing a maildir
@@ -65,7 +79,7 @@ class Command(BaseCommand):
             for m in mbox:
                 pass
         except AttributeError:
-            logger.warning('Broken mbox/Maildir, aborting')
+            logger.error('Broken mbox/Maildir, aborting')
             return
 
         logger.info('Parsing %d mails', count)
@@ -81,10 +95,15 @@ class Command(BaseCommand):
                 # somewhere for future reference?
                 errors += 1
 
-            if (i % 10) == 0:
+            if verbosity == 1 and (i % 10) == 0:
                 self.stdout.write('%06d/%06d\r' % (i, count), ending='')
                 self.stdout.flush()
 
+        mbox.close()
+
+        if not verbosity:
+            return
+
         self.stdout.write(
             'Processed %(total)d messages -->\n'
             '  %(covers)4d cover letters\n'
@@ -101,4 +120,3 @@ class Command(BaseCommand):
                 'errors': errors,
                 'new': count - dropped - errors,
             })
-        mbox.close()
diff --git a/patchwork/settings/base.py b/patchwork/settings/base.py
index 16ca712a..3eb1f0e2 100644
--- a/patchwork/settings/base.py
+++ b/patchwork/settings/base.py
@@ -177,17 +177,17 @@ LOGGING = {
     'loggers': {
         'django': {
             'handlers': ['console'],
-            'level': 'INFO',
+            'level': 'WARNING',
             'propagate': True,
         },
         'patchwork.parser': {
             'handlers': ['console'],
-            'level': 'DEBUG',
+            'level': 'WARNING',
             'propagate': False,
         },
         'patchwork.management.commands': {
             'handlers': ['console', 'mail_admins'],
-            'level': 'INFO',
+            'level': 'WARNING',
             'propagate': True,
         },
     },
-- 
2.17.1



More information about the Patchwork mailing list