Skip to content
This repository was archived by the owner on Aug 13, 2020. It is now read-only.

Commit 71f7c6d

Browse files
authored
Merge pull request #776 from CJSCommonPlatform/add-debug-logger
Add debug logger
2 parents ac943d3 + 8cfa5ae commit 71f7c6d

File tree

3 files changed

+79
-0
lines changed

3 files changed

+79
-0
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ on [Keep a CHANGELOG](http://keepachangelog.com/). This project adheres to
44
[Semantic Versioning](http://semver.org/).
55

66
## [Unreleased]
7+
### Added
8+
- Injectable debug logger that logs only if debug logging is set.
79

810
## [6.1.0] - 2018-09-28
911
### Changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package uk.gov.justice.services.messaging.logging;
2+
3+
import java.util.function.Supplier;
4+
5+
import org.slf4j.Logger;
6+
7+
public class DebugLogger {
8+
9+
public void debug(final Logger logger, final Supplier<String> message) {
10+
11+
if (logger.isDebugEnabled()) {
12+
try {
13+
logger.debug(message.get());
14+
} catch (final Exception e) {
15+
logger.error("Could not generate debug log message", e);
16+
}
17+
}
18+
}
19+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package uk.gov.justice.services.messaging.logging;
2+
3+
import static org.mockito.Mockito.verify;
4+
import static org.mockito.Mockito.verifyNoMoreInteractions;
5+
import static org.mockito.Mockito.when;
6+
7+
import org.junit.Test;
8+
import org.junit.runner.RunWith;
9+
import org.mockito.InjectMocks;
10+
import org.mockito.Mock;
11+
import org.mockito.runners.MockitoJUnitRunner;
12+
import org.slf4j.Logger;
13+
14+
@RunWith(MockitoJUnitRunner.class)
15+
public class DebugLoggerTest {
16+
17+
@Mock
18+
private Logger logger;
19+
20+
@InjectMocks
21+
private DebugLogger debugLogger;
22+
23+
@Test
24+
public void shouldLogNameIfDebugIsTrue() {
25+
26+
when(logger.isDebugEnabled()).thenReturn(true);
27+
28+
debugLogger.debug(logger, () -> "Test Message");
29+
30+
verify(logger).debug("Test Message");
31+
}
32+
33+
@Test
34+
public void shouldNotLogNameIfDebugIsFalse() {
35+
36+
when(logger.isDebugEnabled()).thenReturn(false);
37+
38+
debugLogger.debug(logger, () -> "Test Message");
39+
40+
verify(logger).isDebugEnabled();
41+
verifyNoMoreInteractions(logger);
42+
}
43+
44+
@Test
45+
public void shouldLogErrorIfExceptionIsThrownWhenLogging() {
46+
47+
final RuntimeException runtimeException = new RuntimeException();
48+
49+
when(logger.isDebugEnabled()).thenReturn(true);
50+
51+
debugLogger.debug(logger, () -> {
52+
throw runtimeException;
53+
});
54+
55+
verify(logger).isDebugEnabled();
56+
verify(logger).error("Could not generate debug log message", runtimeException);
57+
}
58+
}

0 commit comments

Comments
 (0)