From 2901143b1b4f772f638bacbd879dfc0d344c93cb Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Fri, 27 Sep 2019 09:30:10 +0100 Subject: [PATCH 1/4] Added as_string() in LogRecord constructor, and updated tests. All tests passing on Python2 and Python3. --- supervisor/loggers.py | 3 ++- supervisor/tests/test_loggers.py | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/supervisor/loggers.py b/supervisor/loggers.py index 5793698d2..46c0daeb5 100644 --- a/supervisor/loggers.py +++ b/supervisor/loggers.py @@ -16,6 +16,7 @@ from supervisor.compat import syslog from supervisor.compat import long from supervisor.compat import is_text_stream +from supervisor.compat import as_string class LevelsByName: CRIT = 50 # messages that probably require immediate user attention @@ -277,7 +278,7 @@ def doRollover(self): class LogRecord: def __init__(self, level, msg, **kw): self.level = level - self.msg = msg + self.msg = as_string(msg) self.kw = kw self.dictrepr = None diff --git a/supervisor/tests/test_loggers.py b/supervisor/tests/test_loggers.py index 4d38ad841..0742c1766 100644 --- a/supervisor/tests/test_loggers.py +++ b/supervisor/tests/test_loggers.py @@ -535,9 +535,12 @@ def asdict(self): @mock.patch('syslog.syslog', MockSysLog()) def test_emit_ascii_noerror(self): handler = self._makeOne() - record = self._makeLogRecord('hello!') + record = self._makeLogRecord(b'hello!') handler.emit(record) syslog.syslog.assert_called_with('hello!') + record = self._makeLogRecord('hi!') + handler.emit(record) + syslog.syslog.assert_called_with('hi!') @mock.patch('syslog.syslog', MockSysLog()) def test_close(self): From 592a730ad6e96415cdc41055fc82376d56f4623d Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Fri, 27 Sep 2019 10:31:28 +0100 Subject: [PATCH 2/4] Removed as_string() from LogRecord constructor (a bridge too far) but added to else case in asdict(). --- supervisor/loggers.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/supervisor/loggers.py b/supervisor/loggers.py index 46c0daeb5..8b2ae3262 100644 --- a/supervisor/loggers.py +++ b/supervisor/loggers.py @@ -278,7 +278,7 @@ def doRollover(self): class LogRecord: def __init__(self, level, msg, **kw): self.level = level - self.msg = as_string(msg) + self.msg = msg self.kw = kw self.dictrepr = None @@ -290,9 +290,9 @@ def asdict(self): asctime = '%s,%03d' % (part1, msecs) levelname = LOG_LEVELS_BY_NUM[self.level] if self.kw: - msg = self.msg % self.kw + msg = as_string(self.msg) % self.kw else: - msg = self.msg + msg = as_string(self.msg) self.dictrepr = {'message':msg, 'levelname':levelname, 'asctime':asctime} return self.dictrepr From 335b4e362dd07855f13f6f590bf60f3a9869cdd0 Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Fri, 27 Sep 2019 11:13:48 +0100 Subject: [PATCH 3/4] Updated .gitignore to ignore certain coverage files named like '.coverage..NNNN.MMMM'. --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 661e82034..70cadbb3c 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,7 @@ *.swp *.pss .DS_Store -.coverage +.coverage* .eggs/ .pytest_cache/ .tox/ From 85792fd33fb4e94c5493a270266368936cd16659 Mon Sep 17 00:00:00 2001 From: Vinay Sajip Date: Tue, 1 Oct 2019 19:08:06 +0100 Subject: [PATCH 4/4] Added a minor implementation improvement. --- supervisor/loggers.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/supervisor/loggers.py b/supervisor/loggers.py index 8b2ae3262..84d47ae8e 100644 --- a/supervisor/loggers.py +++ b/supervisor/loggers.py @@ -289,10 +289,9 @@ def asdict(self): part1 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(now)) asctime = '%s,%03d' % (part1, msecs) levelname = LOG_LEVELS_BY_NUM[self.level] + msg = as_string(self.msg) if self.kw: - msg = as_string(self.msg) % self.kw - else: - msg = as_string(self.msg) + msg = msg % self.kw self.dictrepr = {'message':msg, 'levelname':levelname, 'asctime':asctime} return self.dictrepr