Skip to content

Commit 51ebc00

Browse files
Merge branch 'main' into feature/fix-dependabot
2 parents 4bbf0f7 + d0ef5ca commit 51ebc00

6 files changed

Lines changed: 31 additions & 25 deletions

File tree

.github/workflows/ci-build-publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ jobs:
7575
echo "artefact_name=${repo_name}-${{ needs.Artefact-Version.outputs.artefact_version }}" >> $GITHUB_OUTPUT
7676
7777
- name: Upload JAR Artefact
78-
uses: actions/upload-artifact@v6
78+
uses: actions/upload-artifact@v7
7979
with:
8080
name: app-jar
8181
path: build/libs/${{ steps.repo_vars.outputs.artefact_name }}.jar
@@ -133,7 +133,7 @@ jobs:
133133
uses: actions/checkout@v6
134134

135135
- name: Download JAR Artefact
136-
uses: actions/download-artifact@v7
136+
uses: actions/download-artifact@v8
137137
with:
138138
name: app-jar
139139
path: build/libs

.github/workflows/codeql.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ jobs:
6767
# - It's available to download and inspect from the GitHub Actions UI
6868
- name: Upload SBOM
6969
if: always()
70-
uses: actions/upload-artifact@v6
70+
uses: actions/upload-artifact@v7
7171
with:
7272
name: sbom
7373
path: build/resources/main/META-INF/sbom/application.cdx.json
@@ -115,7 +115,7 @@ jobs:
115115
cmd_options: "-a -J zap_report.json -r zap_report.html"
116116

117117
- name: Upload ZAP HTML Report
118-
uses: actions/upload-artifact@v6
118+
uses: actions/upload-artifact@v7
119119
with:
120120
name: zap-html-report
121121
path: zap_report.html

src/main/resources/logback.xml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,20 @@
33
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
44
<providers>
55
<mdc/>
6-
<logLevel/>
76
<timestamp>
87
<fieldName>timestamp</fieldName>
98
<pattern>yyyy-MM-dd' 'HH:mm:ss.SSS</pattern>
109
</timestamp>
1110
<loggerName/>
1211
<threadName/>
13-
<message/>
12+
<logLevel/>
13+
<pattern>
14+
<pattern>{"message": "%message%n%xException{full}"}</pattern>
15+
</pattern>
1416
</providers>
1517
</encoder>
1618
</appender>
17-
<root level="INFO"><appender-ref ref="JSON"/></root>
19+
<root level="INFO">
20+
<appender-ref ref="JSON"/>
21+
</root>
1822
</configuration>
Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,53 @@
11
package uk.gov.hmcts.cp.integration;
22

3+
import ch.qos.logback.classic.AsyncAppender;
34
import com.fasterxml.jackson.core.type.TypeReference;
45
import com.fasterxml.jackson.databind.ObjectMapper;
56
import lombok.extern.slf4j.Slf4j;
7+
import org.assertj.core.api.AssertionsForClassTypes;
68
import org.junit.jupiter.api.AfterEach;
79
import org.junit.jupiter.api.Test;
10+
import org.slf4j.LoggerFactory;
811
import org.slf4j.MDC;
912

1013
import java.io.ByteArrayOutputStream;
1114
import java.io.IOException;
1215
import java.io.PrintStream;
13-
import java.nio.charset.StandardCharsets;
1416
import java.util.Map;
1517

1618
import static org.assertj.core.api.Assertions.assertThat;
1719

1820
@Slf4j
1921
class SpringLoggingIntegrationTest extends IntegrationTestBase {
20-
21-
private final PrintStream originalStdOut = System.out;
22+
private PrintStream originalStdOut = System.out;
2223

2324
@AfterEach
2425
void afterEach() {
2526
System.setOut(originalStdOut);
2627
}
2728

2829
@Test
29-
void springboot_test_should_log_correct_fields() throws IOException {
30+
void springboot_test_should_log_correct_fields_including_exception() throws IOException {
3031
MDC.put("any-mdc-field", "1234-1234");
31-
final ByteArrayOutputStream capturedStdOut = captureStdOut();
32-
log.info("spring boot test message");
32+
ByteArrayOutputStream capturedStdOut = captureStdOut();
33+
log.info("spring boot test message", new RuntimeException("MyException"));
3334

34-
final Map<String, Object> capturedFields = new ObjectMapper().readValue(capturedStdOut.toString(StandardCharsets.UTF_8), new TypeReference<>() {
35+
String logMessage = capturedStdOut.toString();
36+
AssertionsForClassTypes.assertThat(logMessage).isNotEmpty();
37+
Map<String, Object> capturedFields = new ObjectMapper().readValue(logMessage, new TypeReference<>() {
3538
});
36-
37-
assertThat(capturedFields)
38-
.containsEntry("any-mdc-field", "1234-1234")
39-
.containsKey("timestamp")
40-
.containsEntry("logger_name", "uk.gov.hmcts.cp.integration.SpringLoggingIntegrationTest")
41-
.containsEntry("thread_name", "Test worker")
42-
.containsEntry("level", "INFO")
43-
.containsEntry("message", "spring boot test message");
39+
assertThat(capturedFields.get("any-mdc-field")).isEqualTo("1234-1234");
40+
assertThat(capturedFields.get("timestamp")).isNotNull();
41+
assertThat(capturedFields.get("logger_name")).isEqualTo("uk.gov.hmcts.cp.integration.SpringLoggingIntegrationTest");
42+
assertThat(capturedFields.get("thread_name")).isEqualTo("Test worker");
43+
assertThat(capturedFields.get("level")).isEqualTo("INFO");
44+
assertThat(capturedFields.get("message").toString()).contains("spring boot test message\njava.lang.RuntimeException: MyException");
45+
assertThat(capturedFields.get("message").toString()).contains("at uk.gov.hmcts.cp.integration.SpringLoggingIntegrationTest");
4446
}
4547

4648
private ByteArrayOutputStream captureStdOut() {
4749
final ByteArrayOutputStream capturedStdOut = new ByteArrayOutputStream();
48-
System.setOut(new PrintStream(capturedStdOut, true, StandardCharsets.UTF_8));
50+
System.setOut(new PrintStream(capturedStdOut));
4951
return capturedStdOut;
5052
}
5153
}

src/test/java/uk/gov/hmcts/cp/integration/TracingIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ private void assertTracingFields(final Map<String, Object> log, final String exp
143143

144144
private void assertCommonLogFields(final Map<String, Object> log) {
145145
assertEquals("uk.gov.hmcts.cp.controllers.ExampleController", log.get("logger_name"));
146-
assertEquals(log.get("message"), "getExampleByExampleId example for " + entity.getId());
146+
assertEquals(log.get("message"), "getExampleByExampleId example for " + entity.getId() + "\n");
147147
}
148148

149149
private void assertResponseHeaders(final MvcResult result, final String expectedTraceId, final String expectedSpanId) {

src/test/java/uk/gov/hmcts/cp/logging/JunitLoggingTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ void junit_should_log_correct_fields() throws JsonProcessingException {
3232
.containsEntry("logger_name", "uk.gov.hmcts.cp.logging.JunitLoggingTest")
3333
.containsEntry("thread_name", "Test worker")
3434
.containsEntry("level", "INFO")
35-
.containsEntry("message", "junit test message");
35+
.containsEntry("message", "junit test message\n");
3636
}
3737

3838
private ByteArrayOutputStream captureStdOut() {

0 commit comments

Comments
 (0)