Skip to content

Commit 3c791d6

Browse files
committed
Add function for custom format + tests
1 parent 50e8e4e commit 3c791d6

4 files changed

Lines changed: 54 additions & 0 deletions

File tree

friendlylog/colored_logger.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,18 @@ def format(self, record):
5050
return super(_ColoredFormatter, self).format(record)
5151

5252

53+
def set_fmt(fmt_string):
54+
assert isinstance(fmt_string, str), "fmt_string must be string"
55+
56+
global inner_formatter
57+
58+
formatter = _ColoredFormatter(
59+
fmt=fmt_string
60+
)
61+
inner_stream_handler.setFormatter(formatter)
62+
inner_formatter = formatter
63+
64+
5365
_logger = logging.getLogger("friendlylog.ColoredLogger" + "-" + __name__)
5466
do_not_propagate(_logger)
5567

friendlylog/simple_logger.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,18 @@ def format(self, record):
3232
return super(_SimpleFormatter, self).format(record)
3333

3434

35+
def set_fmt(fmt_string):
36+
assert isinstance(fmt_string, str), "fmt_string must be string"
37+
38+
global inner_formatter
39+
40+
formatter = _SimpleFormatter(
41+
fmt=fmt_string
42+
)
43+
inner_stream_handler.setFormatter(formatter)
44+
inner_formatter = formatter
45+
46+
3547
_logger = logging.getLogger("friendlyLog.SimpleLogger" + "-" + __name__)
3648
do_not_propagate(_logger)
3749

@@ -45,6 +57,7 @@ def format(self, record):
4557
_logger.setLevel(logging.DEBUG)
4658

4759

60+
4861
# Export functions and objects.
4962
inner_logger = _logger # Don't use this except if you know what you are doing.
5063
inner_stream_handler = _stream_handler # Same thing for this object.

tests/test_colored_logger.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def setUp(self):
2323
self.log_capture = io.StringIO()
2424
handler = logging.StreamHandler(self.log_capture)
2525
handler.setFormatter(logger.inner_formatter)
26+
logger.inner_stream_handler = handler
2627
logger.inner_logger.addHandler(handler)
2728
logger.setLevel(logging.DEBUG)
2829

@@ -210,6 +211,20 @@ def test_non_str_logging(self):
210211
logger.critical({})
211212
logger.warning(set([-1, 4]))
212213

214+
def test_set_custom_fmt(self):
215+
dbg_lvls = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
216+
fmt_string = "[%(funcName)s] %(message)s"
217+
logger.set_fmt(fmt_string)
218+
219+
for level in dbg_lvls:
220+
getattr(logger, level.lower())("Hello")
221+
222+
last_n = self.last_n_lines(len(dbg_lvls))
223+
for level, log in zip(dbg_lvls, last_n):
224+
self.assertRegex(
225+
log,
226+
r"\[test_set_custom_fmt\] .*{0}: Hello.*".format(level))
227+
213228

214229
if __name__ == '__main__':
215230
unittest.main()

tests/test_simple_logger.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import unittest
77

88
from friendlylog import simple_logger as logger
9+
910
from threading import Thread
1011

1112

@@ -24,6 +25,7 @@ def setUp(self):
2425
handler = logging.StreamHandler(self.log_capture)
2526
handler.setFormatter(logger.inner_formatter)
2627
logger.inner_logger.addHandler(handler)
28+
logger.inner_stream_handler = handler
2729
logger.setLevel(logging.DEBUG)
2830

2931
def tearDown(self):
@@ -204,6 +206,18 @@ def test_non_str_logging(self):
204206
logger.critical({})
205207
logger.warning(set([-1, 4, 10, -100]))
206208

209+
def test_set_custom_fmt(self):
210+
dbg_lvls = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
211+
fmt_string = "[%(funcName)s] %(message)s"
212+
logger.set_fmt(fmt_string)
213+
214+
for level in dbg_lvls:
215+
getattr(logger, level.lower())("Hello")
216+
217+
last_n = self.last_n_lines(len(dbg_lvls))
218+
for level, log in zip(dbg_lvls, last_n):
219+
self.assertEqual(f"[test_set_custom_fmt] {level}: Hello", log)
220+
207221

208222
if __name__ == '__main__':
209223
unittest.main()

0 commit comments

Comments
 (0)