--- a/testing/mozbase/mozlog/mozlog/commandline.py
+++ b/testing/mozbase/mozlog/mozlog/commandline.py
@@ -137,28 +137,28 @@ def add_logging_group(parser, include_fo
for optname, (cls, help_str, formatters, action) in fmt_options.iteritems():
for fmt in formatters:
# make sure fmt is in log_formatters and is accepted
if fmt in log_formatters and fmt in include_formatters:
group_add("--log-%s-%s" % (fmt, optname), action=action,
help=help_str, default=None)
-def setup_handlers(logger, formatters, formatter_options):
+def setup_handlers(logger, formatters, formatter_options, allow_unused_options=False):
"""
Add handlers to the given logger according to the formatters and
options provided.
:param logger: The logger configured by this function.
:param formatters: A dict of {formatter, [streams]} to use in handlers.
:param formatter_options: a dict of {formatter: {option: value}} to
to use when configuring formatters.
"""
unused_options = set(formatter_options.keys()) - set(formatters.keys())
- if unused_options:
+ if unused_options and not allow_unused_options:
msg = ("Options specified for unused formatter(s) (%s) have no effect" %
list(unused_options))
raise ValueError(msg)
for fmt, streams in formatters.iteritems():
formatter_cls = log_formatters[fmt][0]
formatter = formatter_cls()
handler_wrappers_and_options = []
@@ -177,17 +177,17 @@ def setup_handlers(logger, formatters, f
for value in streams:
handler = handlers.StreamHandler(stream=value, formatter=formatter)
for wrapper, wrapper_args in handler_wrappers_and_options:
handler = wrapper(handler, *wrapper_args)
logger.add_handler(handler)
-def setup_logging(logger, args, defaults=None, formatter_defaults=None):
+def setup_logging(logger, args, defaults=None, formatter_defaults=None, allow_unused_options=False):
"""
Configure a structuredlogger based on command line arguments.
The created structuredlogger will also be set as the default logger, and
can be retrieved with :py:func:`~mozlog.get_default_logger`.
:param logger: A StructuredLogger instance or string name. If a string, a
new StructuredLogger instance will be created using
@@ -263,12 +263,12 @@ def setup_logging(logger, args, defaults
for name in formatters:
if name not in formatter_options:
formatter_options[name] = default_formatter_options(name, formatter_defaults)
# If the user specified --valgrind, add it as an option for all formatters
if args.get('valgrind', None) is not None:
for name in formatters:
formatter_options[name]['valgrind'] = True
- setup_handlers(logger, formatters, formatter_options)
+ setup_handlers(logger, formatters, formatter_options, allow_unused_options)
set_default_logger(logger)
return logger