Various Fixes to multistructlog
- Force color output on structured-color formatter
- Add log levels and timestamps to output
- Fix reinitialization issue
- Cleanup/clarify README, add changelog
Change-Id: I11433f362e7c1ab8c1ee9fbca2081e136b57f22c
diff --git a/multistructlog.py b/multistructlog.py
index 49338d0..632b820 100644
--- a/multistructlog.py
+++ b/multistructlog.py
@@ -89,16 +89,19 @@
global CURRENT_LOGGER
global CURRENT_LOGGER_PARAMS
+ # if config provided, copy to prevent changes to dict from being pushed
+ # back to caller, otherwise use default config
+ if logging_config:
+ logging_config = copy.deepcopy(logging_config)
+ else:
+ logging_config = {'version': 1, "disable_existing_loggers": False}
+
if CURRENT_LOGGER and CURRENT_LOGGER_PARAMS == (logging_config, level):
return CURRENT_LOGGER
# store unmodified config, which is changed later
CURRENT_LOGGER_PARAMS = (copy.deepcopy(logging_config), level)
- # set bare minimum config if not set
- if not logging_config:
- logging_config = {'version': 1}
-
# check if formatters exists in logging_config, set defaults if not set
if "formatters" not in logging_config:
@@ -109,7 +112,8 @@
},
'structured-color': {
'()': structlog.stdlib.ProcessorFormatter,
- 'processor': structlog.dev.ConsoleRenderer(colors=True),
+ 'processor': structlog.dev.ConsoleRenderer(colors=True,
+ force_colors=True),
},
'structured': {
'()': structlog.stdlib.ProcessorFormatter,
@@ -157,8 +161,12 @@
# configure structlog
structlog.configure(
processors=[
+ structlog.stdlib.filter_by_level,
+ structlog.stdlib.add_log_level,
+ structlog.stdlib.PositionalArgumentsFormatter(),
structlog.processors.StackInfoRenderer(),
structlog.processors.format_exc_info,
+ structlog.processors.TimeStamper(fmt="iso"),
structlog.stdlib.ProcessorFormatter.wrap_for_formatter,
],
context_class=dict,