Skip to content

Commit 143f450

Browse files
committed
- Utvider TestnavLogbackEncoder til å ta config maxStackTraceLength (default som før).
- Endrer logging midlertidig pga. testing. #deploy-levende-arbeidsforhold-ansettelse
1 parent 5a5e414 commit 143f450

File tree

2 files changed

+36
-30
lines changed

2 files changed

+36
-30
lines changed

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

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<configuration>
33
<springProfile name="prod">
4-
<appender name="stdout_json" class="ch.qos.logback.core.ConsoleAppender">
5-
<encoder class="no.nav.testnav.libs.reactivecore.logging.TestnavLogbackEncoder">
4+
<!-- <appender name="stdout_json" class="ch.qos.logback.core.ConsoleAppender">-->
5+
<!-- <encoder class="no.nav.testnav.libs.reactivecore.logging.TestnavLogbackEncoder">-->
66
<!-- <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">-->
77
<!-- <rootCauseFirst>true</rootCauseFirst>-->
88
<!-- -->
@@ -15,8 +15,8 @@
1515
<!-- <exclude>org\.apache\.coyote\..*</exclude>-->
1616
<!-- <exclude>org\.apache\.tomcat\..*</exclude>-->
1717
<!-- </throwableConverter>-->
18-
</encoder>
19-
</appender>
18+
<!-- </encoder>-->
19+
<!-- </appender>-->
2020
<root level="INFO">
2121
<appender-ref ref="stdout_json"/>
2222
</root>

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

+32-26
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import ch.qos.logback.classic.spi.ILoggingEvent;
44
import ch.qos.logback.classic.spi.ThrowableProxy;
55
import com.fasterxml.jackson.core.JsonFactory;
6+
import lombok.Setter;
67
import lombok.SneakyThrows;
78
import lombok.extern.slf4j.Slf4j;
89
import net.logstash.logback.encoder.LogstashEncoder;
@@ -14,45 +15,50 @@
1415

1516
import static java.util.Objects.nonNull;
1617

18+
/**
19+
* Config:
20+
* <li>{@code maxStackTraceLength}: Default 480, set to a negative number to disable truncation of stack trace altogether.</li>
21+
*/
1722
@Slf4j
1823
public class TestnavLogbackEncoder extends LogstashEncoder {
1924

2025
// matches exactly 11 digits (\\d{11}) that are not immediately preceded ((?<!\\d)) or followed ((?!\\d)) by another digit.
2126
private final Pattern pattern = Pattern.compile("(?<!\\d)\\d{11}(?!\\d)");
2227

28+
@Setter
29+
private int maxStackTraceLength = 480;
30+
2331
@SneakyThrows
2432
@Override
2533
public byte[] encode(ILoggingEvent event) {
26-
var outputStream = new ByteArrayOutputStream();
27-
28-
var generator = new JsonFactory().createGenerator(outputStream);
29-
30-
generator.writeStartObject();
31-
32-
generator.writeStringField("@timestamp", new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSXXX")
33-
.format(new java.util.Date(event.getTimeStamp())));
34-
generator.writeStringField("message", formatMessage(event.getFormattedMessage()));
35-
generator.writeStringField("logger_name", event.getLoggerName());
36-
generator.writeStringField("thread_name", event.getThreadName());
37-
generator.writeStringField("level", event.getLevel().toString());
3834

39-
if (nonNull(event.getThrowableProxy())) {
40-
var exception = (ThrowableProxy) event.getThrowableProxy();
41-
if (nonNull(exception.getThrowable())) {
42-
var sw = new StringWriter();
43-
var pw = new PrintWriter(sw);
44-
for (StackTraceElement element : exception.getThrowable().getStackTrace()) {
45-
pw.println("\tat " + element);
35+
var outputStream = new ByteArrayOutputStream();
36+
try (var generator = new JsonFactory().createGenerator(outputStream)) {
37+
38+
generator.writeStartObject();
39+
generator.writeStringField("@timestamp", new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSSSXXX")
40+
.format(new java.util.Date(event.getTimeStamp())));
41+
generator.writeStringField("message", formatMessage(event.getFormattedMessage()));
42+
generator.writeStringField("logger_name", event.getLoggerName());
43+
generator.writeStringField("thread_name", event.getThreadName());
44+
generator.writeStringField("level", event.getLevel().toString());
45+
if (nonNull(event.getThrowableProxy())) {
46+
var exception = (ThrowableProxy) event.getThrowableProxy();
47+
if (nonNull(exception.getThrowable())) {
48+
var sw = new StringWriter();
49+
var pw = new PrintWriter(sw);
50+
for (StackTraceElement element : exception.getThrowable().getStackTrace()) {
51+
pw.println("\tat " + element);
52+
}
53+
var stackTrace = maxStackTraceLength < 0 ? sw.toString() : sw.toString().substring(0, maxStackTraceLength);
54+
generator.writeStringField("stack_trace", stackTrace);
4655
}
47-
var stackTrace = sw.toString()/*.substring(0, 480)*/; //Limit the stack trace to 480 characters
48-
generator.writeStringField("stack_trace", stackTrace);
4956
}
50-
}
57+
generator.writeEndObject();
5158

52-
generator.writeEndObject();
53-
54-
generator.flush();
55-
outputStream.write('\n');
59+
generator.flush();
60+
outputStream.write('\n');
61+
}
5662

5763
return outputStream.toByteArray();
5864
}

0 commit comments

Comments
 (0)