Advanced Usage
You can add extra data to events using the MDC system for any SLF4J implementation supporting MDC that's on a classpath, (for example Logback, Log4j2, JUL).
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>1.7.30</version>
</dependency>
By default all MDC parameters are stored under the “MDC” tab in Sentry.
import java.util.logging.Level;
import org.slf4j.MDC;
void logWithExtras() {
// MDC extras
MDC.put("Environment", "Development");
MDC.put("OS", "Linux");
// This sends an event where the Environment and OS MDC values are set as MDC entries
logger.log(Level.SEVERE, "This is a test");
}
Note that MDC manages data on a per-thread basis, and that a child thread does not automatically inherit MDC properties from its parent.
import io.sentry.Sentry;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.slf4j.MDC;
public class MyClass {
private final Logger logger = Logger.getLogger(MyClass.class.getName());
void logSimpleMessage() {
// This sends a simple event to Sentry
logger.severe("This is a test");
}
void logWithBreadcrumbs() {
// Record a breadcrumb that will be sent with the next event(s),
// by default the last 100 breadcrumbs are kept.
Sentry.addBreadcrumb("User made an action");
// Log entries below `minimumEventLevel` and above or equal to `minimumBreadcrumbLevel`
// are recorded as breadcrumbs
logger.info("User made another action");
// This sends a simple event to Sentry
logger.severe("This is a test");
}
void logWithExtras() {
// MDC extras
MDC.put("extra_key", "extra_value");
// This sends an event with extra data to Sentry
logger.severe("This is a test");
}
void logException() {
try {
unsafeMethod();
} catch (Exception e) {
// This sends an exception event to Sentry
logger.log(Level.SEVERE, "Exception caught", e);
}
}
void unsafeMethod() {
throw new UnsupportedOperationException("You shouldn't call this!");
}
}
Starting with Sentry version 6.0.0 and up, you can define a list of MDC tags
that will be viewable as Tags
in the Sentry UI. MDC Tags
not in this list will be viewable as Context Data
. To define tags, add a context-tags
entry with the tags as comma-separated items to the sentry.properties
file.
dsn=https://examplePublicKey@o0.ingest.sentry.io/0
context-tags=userId,requestId
When you call MDC.put("userId", "myUserId")
with the above configuration in place, the userId
will show up as a tag
on the event in the Sentry UI.
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").
- Package:
- maven:io.sentry:sentry-jul
- Version:
- 7.8.0
- Repository:
- https://github.com/getsentry/sentry-java
- API Documentation:
- https://javadoc.io/doc/io.sentry