Bug 1171849 Let consumers override mozlog default formatter options, r=chmanchester
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user