X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/95f0e835f1a0169560034a7ac3f414aebd1506e8..aba81749d2477043232b82300c0ce15548b61888:/sdk/python/arvados/logging.py diff --git a/sdk/python/arvados/logging.py b/sdk/python/arvados/logging.py index 41f64b95f9..c6371f41b9 100644 --- a/sdk/python/arvados/logging.py +++ b/sdk/python/arvados/logging.py @@ -9,3 +9,23 @@ log_format = '%(asctime)s %(name)s[%(process)d] %(levelname)s: %(message)s' log_date_format = '%Y-%m-%d %H:%M:%S' log_handler = logging.StreamHandler() log_handler.setFormatter(logging.Formatter(log_format, log_date_format)) + +class GoogleHTTPClientFilter: + """Common googleapiclient.http log filters for Arvados clients + + This filter makes `googleapiclient.http` log messages more useful for + typical Arvados applications. Currently it only changes the level of + retry messages (to INFO by default), but its functionality may be + extended in the future. Typical usage looks like: + + logging.getLogger('googleapiclient.http').addFilter(GoogleHTTPClientFilter()) + """ + def __init__(self, *, retry_level='INFO'): + self.retry_levelname = retry_level + self.retry_levelno = getattr(logging, retry_level) + + def filter(self, record): + if record.msg.startswith(('Sleeping ', 'Retry ')): + record.levelname = self.retry_levelname + record.levelno = self.retry_levelno + return True