Adding --logs-deduping-min-level CLI option

This commit is contained in:
Lucas Cimon 2017-08-15 16:26:03 +02:00
commit f5cc21df0e
No known key found for this signature in database
GPG key ID: 08DA831E717571EE
2 changed files with 16 additions and 4 deletions

View file

@ -14,7 +14,7 @@ import six
# pelican.log has to be the first pelican module to be loaded # pelican.log has to be the first pelican module to be loaded
# because logging.setLoggerClass has to be called before logging.getLogger # because logging.setLoggerClass has to be called before logging.getLogger
from pelican.log import init from pelican.log import init as init_logging
from pelican import signals # noqa from pelican import signals # noqa
from pelican.generators import (ArticlesGenerator, PagesGenerator, from pelican.generators import (ArticlesGenerator, PagesGenerator,
SourceFileGenerator, StaticGenerator, SourceFileGenerator, StaticGenerator,
@ -327,6 +327,11 @@ def parse_arguments():
help=('Exit the program with non-zero status if any ' help=('Exit the program with non-zero status if any '
'errors/warnings encountered.')) 'errors/warnings encountered.'))
parser.add_argument('--logs-dedup-min-level', default='WARNING',
choices=('DEBUG', 'INFO', 'WARNING', 'ERROR'),
help=('Only enable log de-duplication for levels equal'
' to or above the specified value'))
return parser.parse_args() return parser.parse_args()
@ -384,7 +389,9 @@ def get_instance(args):
def main(): def main():
args = parse_arguments() args = parse_arguments()
init(args.verbosity, args.fatal) logs_dedup_min_level = getattr(logging, args.logs_dedup_min_level)
init_logging(args.verbosity, args.fatal,
logs_dedup_min_level=logs_dedup_min_level)
logger.debug('Pelican version: %s', __version__) logger.debug('Pelican version: %s', __version__)
logger.debug('Python version: %s', sys.version.split()[0]) logger.debug('Python version: %s', sys.version.split()[0])

View file

@ -91,6 +91,8 @@ class LimitFilter(logging.Filter):
E.g.: log.warning(('43 is not the answer', 'More erroneous answers')) E.g.: log.warning(('43 is not the answer', 'More erroneous answers'))
""" """
LOGS_DEDUP_MIN_LEVEL = logging.WARNING
_ignore = set() _ignore = set()
_raised_messages = set() _raised_messages = set()
_threshold = 5 _threshold = 5
@ -98,7 +100,7 @@ class LimitFilter(logging.Filter):
def filter(self, record): def filter(self, record):
# don't limit log messages for anything above "warning" # don't limit log messages for anything above "warning"
if record.levelno > logging.WARN: if record.levelno > self.LOGS_DEDUP_MIN_LEVEL:
return True return True
# extract group # extract group
@ -226,7 +228,8 @@ def get_formatter():
return TextFormatter() return TextFormatter()
def init(level=None, fatal='', handler=logging.StreamHandler(), name=None): def init(level=None, fatal='', handler=logging.StreamHandler(), name=None,
logs_dedup_min_level=None):
FatalLogger.warnings_fatal = fatal.startswith('warning') FatalLogger.warnings_fatal = fatal.startswith('warning')
FatalLogger.errors_fatal = bool(fatal) FatalLogger.errors_fatal = bool(fatal)
@ -237,6 +240,8 @@ def init(level=None, fatal='', handler=logging.StreamHandler(), name=None):
if level: if level:
logger.setLevel(level) logger.setLevel(level)
if logs_dedup_min_level:
LimitFilter.LOGS_DEDUP_MIN_LEVEL = logs_dedup_min_level
def log_warnings(): def log_warnings():