Skip to content

Commit 21b9cbe

Browse files
Handle deprecation of Logback Markers
The old method providing the first marker was deprecated. This implementation can now handle the entire marker list. It is sufficient for a request log if the list contains the request marker. Signed-off-by: Karsten Schnitter <k.schnitter@sap.com>
1 parent b1eed21 commit 21b9cbe

File tree

6 files changed

+70
-12
lines changed

6 files changed

+70
-12
lines changed

cf-java-logging-support-core/src/test/java/com/sap/hcp/cf/logging/common/request/RequestRecordBuilderTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.sap.hcp.cf.logging.common.request;
22

33
import com.fasterxml.jackson.jr.ob.JSON;
4-
import com.fasterxml.jackson.jr.ob.JSONObjectException;
54
import com.sap.hcp.cf.logging.common.Defaults;
65
import org.junit.jupiter.api.Test;
76

cf-java-logging-support-logback/src/main/java/com/sap/hcp/cf/logback/encoder/BaseFieldSupplier.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,13 @@
55
import com.sap.hcp.cf.logback.converter.api.LogbackContextFieldSupplier;
66
import com.sap.hcp.cf.logging.common.Defaults;
77
import com.sap.hcp.cf.logging.common.Fields;
8-
import com.sap.hcp.cf.logging.common.Markers;
98

109
import java.time.Instant;
1110
import java.util.HashMap;
1211
import java.util.Map;
1312

13+
import static com.sap.hcp.cf.logback.encoder.ILoggingEventUtilities.isRequestLog;
14+
1415
public class BaseFieldSupplier implements LogbackContextFieldSupplier {
1516

1617
@Override
@@ -50,8 +51,4 @@ private String now() {
5051
return String.valueOf(timestamp);
5152
}
5253

53-
private boolean isRequestLog(ILoggingEvent event) {
54-
return Markers.REQUEST_MARKER.equals(event.getMarker());
55-
}
56-
5754
}

cf-java-logging-support-logback/src/main/java/com/sap/hcp/cf/logback/encoder/ILoggingEventUtilities.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import ch.qos.logback.classic.spi.ILoggingEvent;
44
import com.sap.hcp.cf.logging.common.Markers;
5+
import org.slf4j.Marker;
56

7+
import java.util.List;
68
import java.util.Map;
79

810
public final class ILoggingEventUtilities {
@@ -11,7 +13,11 @@ private ILoggingEventUtilities() {
1113
}
1214

1315
public static boolean isRequestLog(ILoggingEvent event) {
14-
return Markers.REQUEST_MARKER.equals(event.getMarker());
16+
List<Marker> markerList = event.getMarkerList();
17+
if (markerList == null || markerList.isEmpty()) {
18+
return false;
19+
}
20+
return markerList.stream().anyMatch(Markers.REQUEST_MARKER::equals);
1521
}
1622

1723
public static Map<?, ?> getMap(ILoggingEvent event) {

cf-java-logging-support-logback/src/main/java/com/sap/hcp/cf/logback/encoder/JsonEncoder.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,9 +290,13 @@ private String getJson(ILoggingEvent event) {
290290
}
291291

292292
private <P extends ComposerBase> void addMarkers(ObjectComposer<P> oc, ILoggingEvent event) throws IOException {
293-
if (sendDefaultValues || event.getMarker() != null) {
293+
if (sendDefaultValues || (event.getMarkerList() != null && !event.getMarkerList().isEmpty())) {
294294
ArrayComposer<ObjectComposer<P>> ac = oc.startArrayField(Fields.CATEGORIES);
295-
addMarker(ac, event.getMarker());
295+
if (event.getMarkerList() != null) {
296+
for (Marker marker: event.getMarkerList()) {
297+
addMarker(ac, marker);
298+
}
299+
}
296300
ac.end();
297301
}
298302
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.sap.hcp.cf.logback.encoder;
2+
3+
import ch.qos.logback.classic.spi.ILoggingEvent;
4+
import com.sap.hcp.cf.logging.common.Markers;
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.api.extension.ExtendWith;
7+
import org.mockito.Mock;
8+
import org.mockito.junit.jupiter.MockitoExtension;
9+
import org.slf4j.Marker;
10+
11+
import java.util.Arrays;
12+
import java.util.Collections;
13+
14+
import static org.junit.jupiter.api.Assertions.assertFalse;
15+
import static org.junit.jupiter.api.Assertions.assertTrue;
16+
import static org.mockito.Mockito.mock;
17+
import static org.mockito.Mockito.when;
18+
19+
@ExtendWith(MockitoExtension.class)
20+
class ILoggingEventUtilitiesTest {
21+
22+
@Mock
23+
private ILoggingEvent event;
24+
25+
@Test
26+
void noMarkersIsNotRequqstLog() {
27+
assertFalse(ILoggingEventUtilities.isRequestLog(event));
28+
}
29+
30+
@Test
31+
void emptyMarkerListIsNotRequestLog() {
32+
when(event.getMarkerList()).thenReturn(Collections.emptyList());
33+
assertFalse(ILoggingEventUtilities.isRequestLog(event));
34+
}
35+
36+
@Test
37+
void withRequestMarkerIsNotRequestLog() {
38+
when(event.getMarkerList()).thenReturn(Arrays.asList(mock(Marker.class), Markers.REQUEST_MARKER));
39+
assertTrue(ILoggingEventUtilities.isRequestLog(event));
40+
}
41+
42+
@Test
43+
void withOtherMarkerIsNotRequestLog() {
44+
when(event.getMarkerList()).thenReturn(Arrays.asList(mock(Marker.class), mock(Marker.class)));
45+
assertFalse(ILoggingEventUtilities.isRequestLog(event));
46+
}
47+
}

cf-java-logging-support-logback/src/test/java/com/sap/hcp/cf/logback/encoder/RequestRecordFieldSupplierTest.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
import org.junit.jupiter.api.extension.ExtendWith;
88
import org.mockito.Mock;
99
import org.mockito.junit.jupiter.MockitoExtension;
10+
import org.slf4j.Marker;
1011

12+
import java.util.Collections;
13+
import java.util.List;
1114
import java.util.Map;
1215

1316
import static com.sap.hcp.cf.logging.common.request.RequestRecordBuilder.requestRecord;
@@ -17,13 +20,15 @@
1720
@ExtendWith(MockitoExtension.class)
1821
public class RequestRecordFieldSupplierTest {
1922

23+
private static final List<Marker> REQUEST_MARKER = Collections.singletonList(Markers.REQUEST_MARKER);
24+
2025
private final LogbackContextFieldSupplier fieldSupplier = new RequestRecordFieldSupplier();
2126
@Mock
2227
private ILoggingEvent event;
2328

2429
@Test
2530
public void nullArgumentArray() {
26-
when(event.getMarker()).thenReturn(Markers.REQUEST_MARKER);
31+
when(event.getMarkerList()).thenReturn(REQUEST_MARKER);
2732
when(event.getFormattedMessage()).thenReturn("");
2833

2934
Map<String, Object> fields = fieldSupplier.map(event);
@@ -33,7 +38,7 @@ public void nullArgumentArray() {
3338

3439
@Test
3540
public void emptyArgumentArray() {
36-
when(event.getMarker()).thenReturn(Markers.REQUEST_MARKER);
41+
when(event.getMarkerList()).thenReturn(REQUEST_MARKER);
3742
when(event.getFormattedMessage()).thenReturn("");
3843
when(event.getArgumentArray()).thenReturn(new Object[0]);
3944

@@ -44,7 +49,7 @@ public void emptyArgumentArray() {
4449

4550
@Test
4651
public void requestRecordArgument() {
47-
when(event.getMarker()).thenReturn(Markers.REQUEST_MARKER);
52+
when(event.getMarkerList()).thenReturn(REQUEST_MARKER);
4853
when(event.getArgumentArray()).thenReturn(new Object[] { requestRecord("test").build() });
4954

5055
Map<String, Object> fields = fieldSupplier.map(event);

0 commit comments

Comments
 (0)