Skip to content

Commit 41ebc63

Browse files
committed
- Logger nå causes rekursivt om ønskelig (default off, som før).
#deploy-levende-arbeidsforhold-ansettelse
1 parent 42c25f9 commit 41ebc63

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

apps/levende-arbeidsforhold-ansettelse/src/main/resources/logback-spring.xml

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<appender name="stdout_json" class="ch.qos.logback.core.ConsoleAppender">
55
<encoder class="no.nav.testnav.libs.reactivecore.logging.TestnavLogbackEncoder">
66
<maxStackTraceLength>-1</maxStackTraceLength>
7+
<addCauses>true</addCauses>
78
<!-- <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">-->
89
<!-- <rootCauseFirst>true</rootCauseFirst>-->
910
<!-- -->

libs/reactive-core/src/main/java/no/nav/testnav/libs/reactivecore/logging/TestnavLogbackEncoder.java

+21
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package no.nav.testnav.libs.reactivecore.logging;
22

33
import ch.qos.logback.classic.spi.ILoggingEvent;
4+
import ch.qos.logback.classic.spi.IThrowableProxy;
45
import ch.qos.logback.classic.spi.ThrowableProxy;
56
import com.fasterxml.jackson.core.JsonFactory;
67
import lombok.Setter;
@@ -18,6 +19,7 @@
1819
/**
1920
* Config:
2021
* <li>{@code maxStackTraceLength}: Default 480, set to a negative number to disable truncation of stack trace altogether.</li>
22+
* <li>@{code addCauses}: If {@code true}, adds the cause(s) to the stack trace (without stack traces for each cause) Truncated according to above.</li>
2123
*/
2224
@Slf4j
2325
public class TestnavLogbackEncoder extends LogstashEncoder {
@@ -28,6 +30,9 @@ public class TestnavLogbackEncoder extends LogstashEncoder {
2830
@Setter
2931
private int maxStackTraceLength = 480;
3032

33+
@Setter
34+
private boolean addCauses = false;
35+
3136
@SneakyThrows
3237
@Override
3338
public byte[] encode(ILoggingEvent event) {
@@ -50,6 +55,9 @@ public byte[] encode(ILoggingEvent event) {
5055
for (StackTraceElement element : exception.getThrowable().getStackTrace()) {
5156
pw.println("\tat " + element);
5257
}
58+
if (addCauses) {
59+
recursivelyAddCauses(exception, pw);
60+
}
5361
var stackTrace = maxStackTraceLength < 0 ? sw.toString() : sw.toString().substring(0, maxStackTraceLength);
5462
generator.writeStringField("stack_trace", stackTrace);
5563
}
@@ -63,6 +71,19 @@ public byte[] encode(ILoggingEvent event) {
6371
return outputStream.toByteArray();
6472
}
6573

74+
private static void recursivelyAddCauses(IThrowableProxy exception, PrintWriter pw) {
75+
var cause = exception.getCause();
76+
if (cause != null) {
77+
pw
78+
.append("caused by ")
79+
.append(cause.getClassName())
80+
.append(": ")
81+
.append(cause.getMessage())
82+
.append("\n");
83+
recursivelyAddCauses(cause, pw);
84+
}
85+
}
86+
6687
private String formatMessage(String message) {
6788
var matcher = pattern.matcher(message);
6889

0 commit comments

Comments
 (0)