Skip to content

Commit 1baab89

Browse files
authored
fix: logback error show in error reporting console (#43)
1 parent 494a642 commit 1baab89

File tree

2 files changed

+34
-8
lines changed

2 files changed

+34
-8
lines changed

src/main/java/com/google/cloud/logging/logback/LoggingAppender.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@
3939
import java.io.IOException;
4040
import java.util.ArrayList;
4141
import java.util.Collections;
42+
import java.util.HashMap;
4243
import java.util.HashSet;
4344
import java.util.List;
45+
import java.util.Map;
4446
import java.util.Set;
4547

4648
/**
@@ -72,6 +74,8 @@ public class LoggingAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
7274
private static final String LEVEL_NAME_KEY = "levelName";
7375
private static final String LEVEL_VALUE_KEY = "levelValue";
7476
private static final String LOGGER_NAME_KEY = "loggerName";
77+
private static final String TYPE =
78+
"type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent";
7579
private static final List<LoggingEventEnhancer> DEFAULT_LOGGING_EVENT_ENHANCERS =
7680
ImmutableList.<LoggingEventEnhancer>of(new MDCEventEnhancer());
7781

@@ -284,11 +288,17 @@ private LogEntry logEntryFor(ILoggingEvent e) {
284288
writeStack(e.getThrowableProxy(), "", payload);
285289

286290
Level level = e.getLevel();
291+
Severity severity = severityFor(level);
292+
293+
Map<String, Object> jsonContent = new HashMap<>();
294+
jsonContent.put("message", payload.toString().trim());
295+
if (severity == Severity.ERROR) {
296+
jsonContent.put("@type", TYPE);
297+
}
287298
LogEntry.Builder builder =
288-
LogEntry.newBuilder(Payload.StringPayload.of(payload.toString().trim()))
299+
LogEntry.newBuilder(Payload.JsonPayload.of(jsonContent))
289300
.setTimestamp(e.getTimeStamp())
290-
.setSeverity(severityFor(level));
291-
301+
.setSeverity(severity);
292302
builder
293303
.addLabel(LEVEL_NAME_KEY, level.toString())
294304
.addLabel(LEVEL_VALUE_KEY, String.valueOf(level.toInt()))

src/test/java/com/google/cloud/logging/logback/LoggingAppenderTest.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@
3434
import com.google.cloud.logging.Logging;
3535
import com.google.cloud.logging.Logging.WriteOption;
3636
import com.google.cloud.logging.LoggingOptions;
37-
import com.google.cloud.logging.Payload.StringPayload;
37+
import com.google.cloud.logging.Payload.JsonPayload;
3838
import com.google.cloud.logging.Severity;
3939
import com.google.common.collect.ImmutableMap;
40+
import java.util.HashMap;
4041
import java.util.Map;
4142
import org.easymock.Capture;
4243
import org.easymock.EasyMock;
@@ -82,8 +83,11 @@ public void setUp() {
8283

8384
@Test
8485
public void testFlushLevelConfigUpdatesLoggingFlushSeverity() {
86+
Map<String, Object> jsonContent = new HashMap<>();
87+
jsonContent.put("message", "this is a test");
88+
JsonPayload payload = JsonPayload.of(jsonContent);
8589
LogEntry logEntry =
86-
LogEntry.newBuilder(StringPayload.of("this is a test"))
90+
LogEntry.newBuilder(payload)
8791
.setTimestamp(100000L)
8892
.setSeverity(Severity.WARNING)
8993
.setLabels(
@@ -110,8 +114,14 @@ public void testFlushLevelConfigUpdatesLoggingFlushSeverity() {
110114

111115
@Test
112116
public void testFilterLogsOnlyLogsAtOrAboveLogLevel() {
117+
Map<String, Object> jsonContent = new HashMap<>();
118+
jsonContent.put("message", "this is a test");
119+
jsonContent.put(
120+
"@type",
121+
"type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent");
122+
JsonPayload payload = JsonPayload.of(jsonContent);
113123
LogEntry logEntry =
114-
LogEntry.newBuilder(StringPayload.of("this is a test"))
124+
LogEntry.newBuilder(payload)
115125
.setTimestamp(100000L)
116126
.setSeverity(Severity.ERROR)
117127
.setLabels(
@@ -145,8 +155,11 @@ public void testFilterLogsOnlyLogsAtOrAboveLogLevel() {
145155

146156
@Test
147157
public void testEnhancersAddCorrectLabelsToLogEntries() {
158+
Map<String, Object> jsonContent = new HashMap<>();
159+
jsonContent.put("message", "this is a test");
160+
JsonPayload payload = JsonPayload.of(jsonContent);
148161
LogEntry logEntry =
149-
LogEntry.newBuilder(StringPayload.of("this is a test"))
162+
LogEntry.newBuilder(payload)
150163
.setTimestamp(100000L)
151164
.setSeverity(Severity.WARNING)
152165
.setLabels(
@@ -194,8 +207,11 @@ public void testDefaultWriteOptionsHasExpectedDefaults() {
194207

195208
@Test
196209
public void testMdcValuesAreConvertedToLabels() {
210+
Map<String, Object> jsonContent = new HashMap<>();
211+
jsonContent.put("message", "this is a test");
212+
JsonPayload payload = JsonPayload.of(jsonContent);
197213
LogEntry logEntry =
198-
LogEntry.newBuilder(StringPayload.of("this is a test"))
214+
LogEntry.newBuilder(payload)
199215
.setTimestamp(100000L)
200216
.setSeverity(Severity.INFO)
201217
.setLabels(

0 commit comments

Comments
 (0)