Skip to content

Commit 87690fc

Browse files
authored
[Logs 11] Add severityNumber to SentryLogEvent (#4391)
* Add Log feature to Java SDK * Rate limit for log items * Add options for logs * Add batch processor for logs * Use a separate ExecutorService for log batching * Reduce locking when log event is created * Add system tests for Logs * Separate enum for SentryLogLevel * Remove logsSampleRate option * Move logs options out of experimental namespace * Add severity_number to SentryLogItem
1 parent 8bbd94e commit 87690fc

File tree

5 files changed

+24
-0
lines changed

5 files changed

+24
-0
lines changed

sentry/api/sentry.api

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3043,12 +3043,14 @@ public final class io/sentry/SentryLogEvent : io/sentry/JsonSerializable, io/sen
30433043
public fun getAttributes ()Ljava/util/Map;
30443044
public fun getBody ()Ljava/lang/String;
30453045
public fun getLevel ()Lio/sentry/SentryLogLevel;
3046+
public fun getSeverityNumber ()Ljava/lang/Integer;
30463047
public fun getTimestamp ()Ljava/lang/Double;
30473048
public fun getUnknown ()Ljava/util/Map;
30483049
public fun serialize (Lio/sentry/ObjectWriter;Lio/sentry/ILogger;)V
30493050
public fun setAttributes (Ljava/util/Map;)V
30503051
public fun setBody (Ljava/lang/String;)V
30513052
public fun setLevel (Lio/sentry/SentryLogLevel;)V
3053+
public fun setSeverityNumber (Ljava/lang/Integer;)V
30523054
public fun setTimestamp (Ljava/lang/Double;)V
30533055
public fun setUnknown (Ljava/util/Map;)V
30543056
}
@@ -3063,6 +3065,7 @@ public final class io/sentry/SentryLogEvent$JsonKeys {
30633065
public static final field ATTRIBUTES Ljava/lang/String;
30643066
public static final field BODY Ljava/lang/String;
30653067
public static final field LEVEL Ljava/lang/String;
3068+
public static final field SEVERITY_NUMBER Ljava/lang/String;
30663069
public static final field TIMESTAMP Ljava/lang/String;
30673070
public static final field TRACE_ID Ljava/lang/String;
30683071
public fun <init> ()V

sentry/src/main/java/io/sentry/SentryLogEvent.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public final class SentryLogEvent implements JsonUnknown, JsonSerializable {
1616
private @NotNull Double timestamp;
1717
private @NotNull String body;
1818
private @NotNull SentryLogLevel level;
19+
private @Nullable Integer severityNumber;
1920

2021
private @Nullable Map<String, SentryLogEventAttributeValue> attributes;
2122
private @Nullable Map<String, Object> unknown;
@@ -72,11 +73,20 @@ public void setAttributes(final @Nullable Map<String, SentryLogEventAttributeVal
7273
this.attributes = attributes;
7374
}
7475

76+
public @Nullable Integer getSeverityNumber() {
77+
return severityNumber;
78+
}
79+
80+
public void setSeverityNumber(@Nullable Integer severityNumber) {
81+
this.severityNumber = severityNumber;
82+
}
83+
7584
// region json
7685
public static final class JsonKeys {
7786
public static final String TIMESTAMP = "timestamp";
7887
public static final String TRACE_ID = "trace_id";
7988
public static final String LEVEL = "level";
89+
public static final String SEVERITY_NUMBER = "severity_number";
8090
public static final String BODY = "body";
8191
public static final String ATTRIBUTES = "attributes";
8292
}
@@ -90,6 +100,9 @@ public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger
90100
writer.name(JsonKeys.TRACE_ID).value(logger, traceId);
91101
writer.name(JsonKeys.BODY).value(body);
92102
writer.name(JsonKeys.LEVEL).value(logger, level);
103+
if (severityNumber != null) {
104+
writer.name(JsonKeys.SEVERITY_NUMBER).value(logger, severityNumber);
105+
}
93106
if (attributes != null) {
94107
writer.name(JsonKeys.ATTRIBUTES).value(logger, attributes);
95108
}
@@ -124,6 +137,7 @@ public static final class Deserializer implements JsonDeserializer<SentryLogEven
124137
@Nullable Double timestamp = null;
125138
@Nullable String body = null;
126139
@Nullable SentryLogLevel level = null;
140+
@Nullable Integer severityNumber = null;
127141
@Nullable Map<String, SentryLogEventAttributeValue> attributes = null;
128142

129143
reader.beginObject();
@@ -142,6 +156,9 @@ public static final class Deserializer implements JsonDeserializer<SentryLogEven
142156
case JsonKeys.LEVEL:
143157
level = reader.nextOrNull(logger, new SentryLogLevel.Deserializer());
144158
break;
159+
case JsonKeys.SEVERITY_NUMBER:
160+
severityNumber = reader.nextIntegerOrNull();
161+
break;
145162
case JsonKeys.ATTRIBUTES:
146163
attributes =
147164
reader.nextMapOrNull(logger, new SentryLogEventAttributeValue.Deserializer());
@@ -187,6 +204,7 @@ public static final class Deserializer implements JsonDeserializer<SentryLogEven
187204
final SentryLogEvent logEvent = new SentryLogEvent(traceId, timestamp, body, level);
188205

189206
logEvent.setAttributes(attributes);
207+
logEvent.setSeverityNumber(severityNumber);
190208
logEvent.setUnknown(unknown);
191209

192210
return logEvent;

sentry/src/main/java/io/sentry/logger/LoggerApi.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ private void captureLog(
116116
final SentryLogEvent logEvent =
117117
new SentryLogEvent(traceId, timestampToUse, messageToUse, level);
118118
logEvent.setAttributes(createAttributes(message, spanId, args));
119+
logEvent.setSeverityNumber(level.getSeverityNumber());
119120

120121
scopes.getClient().captureLog(logEvent, scopes.getCombinedScopeView(), hint);
121122
} catch (Throwable e) {

sentry/src/test/java/io/sentry/protocol/SentryLogsSerializationTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class SentryLogsSerializationTest {
3434
"sentry.sdk.version" to SentryLogEventAttributeValue("string", "8.11.1"),
3535
"sentry.trace.parent_span_id" to SentryLogEventAttributeValue("string", "f28b86350e534671")
3636
)
37+
it.severityNumber = 10
3738
}
3839
)
3940
)

sentry/src/test/resources/json/sentry_logs.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"trace_id": "5c1f73d39486827b9e60ceb1fc23277a",
77
"body": "42e6bd2a-c45e-414d-8066-ed5196fbc686",
88
"level": "info",
9+
"severity_number": 10,
910
"attributes":
1011
{
1112
"sentry.sdk.name":

0 commit comments

Comments
 (0)