Bug 1171849 Let consumers override mozlog default formatter options, r=chmanchester

This commit is contained in:
James Graham
2015-06-05 10:37:15 +01:00
parent 85d3773dbf
commit ced8b826cd
2 changed files with 13 additions and 7 deletions

View File

@@ -37,7 +37,7 @@ def buffer_handler_wrapper(handler, buffer_limit):
buffer_limit = int(buffer_limit) buffer_limit = int(buffer_limit)
return handlers.BufferingLogFilter(handler, buffer_limit) return handlers.BufferingLogFilter(handler, buffer_limit)
def default_formatter_options(log_type): def default_formatter_options(log_type, overrides):
formatter_option_defaults = { formatter_option_defaults = {
"raw": { "raw": {
"level": "debug" "level": "debug"
@@ -46,6 +46,10 @@ def default_formatter_options(log_type):
rv = {"verbose": False, rv = {"verbose": False,
"level": "info"} "level": "info"}
rv.update(formatter_option_defaults.get(log_type, {})) rv.update(formatter_option_defaults.get(log_type, {}))
if overrides is not None:
rv.update(overrides)
return rv return rv
fmt_options = { fmt_options = {
@@ -159,7 +163,7 @@ def setup_handlers(logger, formatters, formatter_options):
logger.add_handler(handler) logger.add_handler(handler)
def setup_logging(suite, args, defaults=None): def setup_logging(suite, args, defaults=None, formatter_defaults=None):
""" """
Configure a structuredlogger based on command line arguments. Configure a structuredlogger based on command line arguments.
@@ -174,7 +178,8 @@ def setup_logging(suite, args, defaults=None):
this isn't supplied, reasonable defaults are chosen this isn't supplied, reasonable defaults are chosen
(coloured mach formatting if stdout is a terminal, or raw (coloured mach formatting if stdout is a terminal, or raw
logs otherwise). logs otherwise).
:param formatter_defaults: A dictionary of {option_name: default_value} to provide
to the formatters in the absence of command line overrides.
:rtype: StructuredLogger :rtype: StructuredLogger
""" """
@@ -216,7 +221,8 @@ def setup_logging(suite, args, defaults=None):
if len(parts) == 3: if len(parts) == 3:
_, formatter, opt = parts _, formatter, opt = parts
if formatter not in formatter_options: if formatter not in formatter_options:
formatter_options[formatter] = default_formatter_options(formatter) formatter_options[formatter] = default_formatter_options(formatter,
formatter_defaults)
formatter_options[formatter][opt] = values formatter_options[formatter][opt] = values
#If there is no user-specified logging, go with the default options #If there is no user-specified logging, go with the default options
@@ -231,7 +237,7 @@ def setup_logging(suite, args, defaults=None):
for name in formatters: for name in formatters:
if name not in formatter_options: if name not in formatter_options:
formatter_options[name] = default_formatter_options(name) formatter_options[name] = default_formatter_options(name, formatter_defaults)
setup_handlers(logger, formatters, formatter_options) setup_handlers(logger, formatters, formatter_options)
set_default_logger(logger) set_default_logger(logger)

View File

@@ -469,10 +469,10 @@ class MachCommands(MachCommandBase):
driver = self._spawn(BuildDriver) driver = self._spawn(BuildDriver)
driver.install_tests(remove=False) driver.install_tests(remove=False)
structured.commandline.formatter_option_defaults['verbose'] = True
params['log'] = structured.commandline.setup_logging("XPCShellTests", params['log'] = structured.commandline.setup_logging("XPCShellTests",
params, params,
{"mach": sys.stdout}) {"mach": sys.stdout},
{"verbose": True})
if conditions.is_android(self): if conditions.is_android(self):
xpcshell = self._spawn(AndroidXPCShellRunner) xpcshell = self._spawn(AndroidXPCShellRunner)