Skip to content

Commit fab663b

Browse files
author
Olivier Chédru
authored
Merge pull request #4 from ochedru/stacktrace
Ability to configure stacktrace.app.packages
2 parents 4d2790c + fc9aa4c commit fab663b

File tree

4 files changed

+36
-11
lines changed

4 files changed

+36
-11
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ appenders:
3939
release: 1.0.0
4040
serverName: 10.0.0.1
4141
extra: {key1:'value1',key2:'value2'}
42+
stacktraceAppPackages: ['com.example','com.foo']
4243
```
4344
4445
| Setting | Default | Description | Example Value |
@@ -52,6 +53,9 @@ appenders:
5253
| `release` | [empty] | The release version of your application | `1.0.0` |
5354
| `serverName` | [empty] | Override the server name (rather than looking it up dynamically) | `10.0.0.1` |
5455
| `extra` | [empty] | Extra data to be sent with errors (but not as tags) | `{key1:'value1',key2:'value2'}` |
56+
| `stacktraceAppPackages` | [empty] | List of package prefixes used by application code | `['com.example','com.foo']` |
57+
58+
If you need to set configuration properties not listed above, append them to the `dsn` as described [here](https://docs.sentry.io/clients/java/config/#configuration-via-the-dsn).
5559

5660
## Maven Artifacts
5761

pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<groupId>org.dhatim</groupId>
66
<artifactId>root-oss</artifactId>
7-
<version>11.0.0</version>
7+
<version>12.1.0</version>
88
</parent>
99
<groupId>org.dhatim</groupId>
1010
<artifactId>dropwizard-sentry</artifactId>
@@ -40,6 +40,7 @@
4040
<dependency>
4141
<groupId>io.sentry</groupId>
4242
<artifactId>sentry-logback</artifactId>
43+
<version>1.7.5</version>
4344
</dependency>
4445
<dependency>
4546
<groupId>junit</groupId>

src/main/java/org/dhatim/dropwizard/sentry/logging/SentryAppenderFactory.java

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,25 @@
66
import ch.qos.logback.core.filter.Filter;
77
import com.fasterxml.jackson.annotation.JsonProperty;
88
import com.fasterxml.jackson.annotation.JsonTypeName;
9-
import static com.google.common.base.Preconditions.checkNotNull;
109
import io.dropwizard.logging.AbstractAppenderFactory;
1110
import io.dropwizard.logging.async.AsyncAppenderFactory;
1211
import io.dropwizard.logging.filter.LevelFilterFactory;
1312
import io.dropwizard.logging.layout.LayoutFactory;
1413
import io.sentry.DefaultSentryClientFactory;
1514
import io.sentry.SentryClient;
1615
import io.sentry.SentryClientFactory;
16+
import io.sentry.dsn.Dsn;
1717
import io.sentry.logback.SentryAppender;
18+
import org.dhatim.dropwizard.sentry.filters.DroppingSentryLoggingFilter;
19+
20+
import javax.validation.constraints.NotNull;
21+
import java.util.List;
1822
import java.util.Map;
1923
import java.util.Optional;
2024
import java.util.Set;
21-
import javax.validation.constraints.NotNull;
22-
import org.dhatim.dropwizard.sentry.filters.DroppingSentryLoggingFilter;
25+
import java.util.stream.Collectors;
26+
27+
import static com.google.common.base.Preconditions.checkNotNull;
2328

2429
@JsonTypeName("sentry")
2530
public class SentryAppenderFactory extends AbstractAppenderFactory<ILoggingEvent> {
@@ -51,6 +56,9 @@ public class SentryAppenderFactory extends AbstractAppenderFactory<ILoggingEvent
5156
@JsonProperty
5257
private Optional<Map<String, Object>> extra = Optional.empty();
5358

59+
@JsonProperty
60+
private Optional<List<String>> stacktraceAppPackages = Optional.empty();
61+
5462
public String getDsn() {
5563
return dsn;
5664
}
@@ -115,12 +123,20 @@ public void setExtra(Optional<Map<String, Object>> extra) {
115123
this.extra = extra;
116124
}
117125

126+
public Optional<List<String>> getStacktraceAppPackages() {
127+
return stacktraceAppPackages;
128+
}
129+
130+
public void setStacktraceAppPackages(Optional<List<String>> stacktraceAppPackages) {
131+
this.stacktraceAppPackages = stacktraceAppPackages;
132+
}
133+
118134
@Override
119135
public Appender<ILoggingEvent> build(LoggerContext context,
120-
String applicationName,
121-
LayoutFactory<ILoggingEvent> layoutFactory,
122-
LevelFilterFactory<ILoggingEvent> levelFilterFactory,
123-
AsyncAppenderFactory<ILoggingEvent> asyncAppenderFactory) {
136+
String applicationName,
137+
LayoutFactory<ILoggingEvent> layoutFactory,
138+
LevelFilterFactory<ILoggingEvent> levelFilterFactory,
139+
AsyncAppenderFactory<ILoggingEvent> asyncAppenderFactory) {
124140
checkNotNull(context);
125141

126142
SentryClientFactory factory;
@@ -131,6 +147,10 @@ public Appender<ILoggingEvent> build(LoggerContext context,
131147
} catch (ReflectiveOperationException ex) {
132148
throw new RuntimeException(ex);
133149
}
150+
String dsn = this.dsn;
151+
if (!new Dsn(dsn).getOptions().containsKey("stacktrace.app.packages")) {
152+
dsn += "&stacktrace.app.packages=" + stacktraceAppPackages.map(list -> list.stream().collect(Collectors.joining(","))).orElse("");
153+
}
134154
SentryClient sentryClient = SentryClientFactory.sentryClient(dsn, factory);
135155

136156
final SentryAppender appender = new SentryAppender();

src/test/java/org/dhatim/dropwizard/sentry/logging/SentryAppenderFactoryTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ public void buildSentryAppenderShouldFailWithNullContext() {
4242

4343
@Test
4444
public void buildSentryAppenderShouldWorkWithValidConfiguration() {
45-
final SentryAppenderFactory factory = new SentryAppenderFactory();
46-
final String dsn = "https://user:pass@app.sentry.io/id";
45+
SentryAppenderFactory factory = new SentryAppenderFactory();
46+
factory.setDsn("https://user:pass@app.sentry.io/id");
4747

4848
Appender<ILoggingEvent> appender
49-
= factory.build(context, dsn, layoutFactory, levelFilterFactory, asyncAppenderFactory);
49+
= factory.build(context, "", layoutFactory, levelFilterFactory, asyncAppenderFactory);
5050

5151
assertThat(appender, instanceOf(AsyncAppender.class));
5252
}

0 commit comments

Comments
 (0)