summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-06-08 12:24:22 +0000
committerGerrit Code Review <review@openstack.org>2018-06-08 12:24:22 +0000
commit4b4dabebabb4517a1c3e56365176d55b1f2e52b7 (patch)
tree86c115d40601d638f9f40d17f66b211ba5732266
parent2d0d08081bced14d3a16370f240e7e98c777bfba (diff)
parent9da1f158b233b7212f010d726cca4f6230bd2e5f (diff)
downloadoslo-log-4b4dabebabb4517a1c3e56365176d55b1f2e52b7.tar.gz
Merge "Provide reset_color key on log record"
-rw-r--r--oslo_log/handlers.py7
-rw-r--r--oslo_log/tests/unit/test_log.py7
2 files changed, 11 insertions, 3 deletions
diff --git a/oslo_log/handlers.py b/oslo_log/handlers.py
index 7481618..d1240de 100644
--- a/oslo_log/handlers.py
+++ b/oslo_log/handlers.py
@@ -146,6 +146,12 @@ class OSJournalHandler(logging.Handler):
class ColorHandler(logging.StreamHandler):
+ """Log handler that sets the 'color' key based on the level
+
+ To use, include a '%(color)s' entry in the logging_context_format_string
+ and a '%(reset_color)s' entry at the end of the format string so that the
+ color setting does not persist between log lines.
+ """
LEVEL_COLORS = {
_TRACE: '\033[00;35m', # MAGENTA
logging.DEBUG: '\033[00;32m', # GREEN
@@ -158,4 +164,5 @@ class ColorHandler(logging.StreamHandler):
def format(self, record):
record.color = self.LEVEL_COLORS[record.levelno]
+ record.reset_color = '\033[00m'
return logging.StreamHandler.format(self, record)
diff --git a/oslo_log/tests/unit/test_log.py b/oslo_log/tests/unit/test_log.py
index 669081c..39b1cfc 100644
--- a/oslo_log/tests/unit/test_log.py
+++ b/oslo_log/tests/unit/test_log.py
@@ -987,7 +987,8 @@ class FancyRecordTestCase(LogTestBase):
"[%(request_id)s]: "
"%(instance)s"
"%(resource)s"
- "%(message)s",
+ "%(message)s"
+ "%(reset_color)s",
logging_default_format_string="%(missing)s: %(message)s")
self.colorlog = log.getLogger()
self._add_handler_with_cleanup(self.colorlog, handlers.ColorHandler)
@@ -1040,7 +1041,7 @@ class FancyRecordTestCase(LogTestBase):
fake_resource = {'name': resource}
message = 'info'
self.colorlog.info(message, context=ctxt, resource=fake_resource)
- expected = ('%s [%s]: [%s] %s\n' %
+ expected = ('%s [%s]: [%s] %s\033[00m\n' %
(color, ctxt.request_id, resource, message))
self.assertEqual(expected, self.stream.getvalue())
@@ -1053,7 +1054,7 @@ class FancyRecordTestCase(LogTestBase):
'id': resource_id}
message = 'info'
self.colorlog.info(message, context=ctxt, resource=fake_resource)
- expected = ('%s [%s]: [%s-%s] %s\n' %
+ expected = ('%s [%s]: [%s-%s] %s\033[00m\n' %
(color, ctxt.request_id, type, resource_id, message))
self.assertEqual(expected, self.stream.getvalue())