This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Repository files navigation

Raven-Java

Raven-Java is a Java client for Sentry. Besides a regular client you can use within your application code, Raven-Java also provides the raven-log4j package you can use to send logging to Sentry via log4j and the raven-logback package to do the same through logback.

Raven-Java supports both HTTP(S) and UDP transport of messages.

Sentry Versions Supported

This client supports Sentry protocol version 2.0 (which is Sentry >= 2.0).

Since version 4.6.0 of Sentry, signed messages have been deprecated. If you still use an earlier version, have a look at the client options below to find out how to enable signed messages.


Using the client

importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// The DSN from Sentry: "http://public:private@host:port/1"StringrawDsn = args[0];
SentryDsndsn = SentryDsn.build(rawDsn);
Client = newClient(dsn);
client.captureMessage("Hello from Raven-Java!");
}
}

A full example is available in raven/src/main/test/net/kencochrane/raven/ClientExample.

Note that SentryDsn will first examine the environment variables and system properties for a variable called SENTRY_DSN. If such a variable is available, that value will be used instead of the DSN you supply (the rawDsn variable in the example above).

This allows flexible usage of the library on PaaS providers such as Heroku. This also means the above example can be simplified to the following if you specify SENTRY_DSN in your:

  • environment variables — e.g. export SENTRY_DSN=yoursentrydsn or setenv SENTRYDSN yoursentrydsn; or
  • system properties — -DSENTRY_DSN=yoursentrydsn
importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// DSN is determined by the client from system properties or envClient = newClient();
client.captureMessage("Hello from Raven-Java!");
}
}

Using the log4j appender

You can either utilize the net.kencochrane.raven.log4j.SentryAppender or net.kencochrane.raven.log4j.AsyncSentryAppender as an appender in your log4j configuration just like you would use any other appender.

log4j.appender.sentry=net.kencochrane.raven.log4j.SentryAppender
log4j.appender.sentry.sentryDsn=http://b4935bdd7862409:7a37d9ad47654281@localhost:8000/1

Like the client, these appenders will examine the system properties and environment variables for a better SENTRY_DSN candidate. Which log messages are ultimately sent to your Sentry instance, depends on the configuration of your Sentry appender. If you only want to send error messages, use the following:

log4j.appender.sentry.Threshold=ERROR

Asynchronous logging

If you use log4j's XML configuration, you can use its AsyncAppender to wrap Raven-Java's SentryAppender.

But even if you use a properties file to configure log4j, you can log asynchronously by using the net.kencochrane.raven.log4j.AsyncSentryAppender instead.


Using the logback appender

Make sure to use the raven-logback artifact and add something like the following to your logback configuration:

<appender name="SENTRY"
class="net.kencochrane.raven.logback.SentryAppender">
<sentryDsn>http://public:private@host:port/project</sentryDsn>
</appender>

Client configuration

Client configuration is completely driven through the Sentry DSN. The DSN you can copy-paste from your Sentry instance looks like this:

http://public:private@host:port/1

Changing the behavior of the client is done through the scheme and querystring of the DSN.

Transport protocols

HTTPS

If you're using https, your DSN should look like this:

https://public:private@host:port/1

Naive HTTPS

If you're using https with a wildcard certificate (which most Java versions can't handle) and you're too lazy to add the certificate to your truststore, you can tell the client to be naive and allow it to ignore the hostname verification:

naive+https://public:private@host:port/1

UDP

Prefer udp? Change your DSN to this:

udp://public:private@host:port/1

Asynchronous

The client can use a separate thread to actually send the messages to Sentry. To enable this feature, add async+ to the scheme in your DSN:

async+http://public:private@host:port/1
# Or
async+https://public:private@host:port/1
# Or
async+naive+https://public:private@host:port/1
# Or
async+udp://public:private@host:port/1

Adding other schemes

You can add your own custom transport and scheme through the register method of the client.

Client options

More client configuration can be specified through the querystring of the DSN like this:

http://public:private@host:port/1?optionA=true&optionB=20

Enabling signed messages

Signed messages have been deprecated in Sentry 4.6.0. If you're using an earlier version, you'll have to tell the client to sign messages through the option raven.includeSignature:

http://public:private@host:port/1?raven.includeSignature=true

HTTP/HTTPS timeout

The default timeout for HTTP/HTTPS transport is set to 10 seconds. If you want to change this value, use the raven.timeout option to specify the timeout in milliseconds.

http://public:private@host:port/1?raven.timeout=10000

Async queue configuration

When using the async transport (this is not the same as using the AsyncSentryAppender), you can configure the behavior of the underlying java.util.concurrent.BlockingQueue through the raven.waitWhenFull and raven.capacity options.

By default the client will not block when the queue is full and will use a queue at maximum capacity. If instead you want to use a blocking queue with a capacity of 20 messages, change your DSN to something like this:

async+http://public:private@host:port/1?raven.waitWhenFull=true&raven.capacity=20

Enabling ServletJSONProcessor

In a servlet environment, Raven can append request information to logs sent to Sentry when logs are created on request threads. Information sent to Sentry include:

  • Request URL
  • POST parameters
  • Request headers
  • Cookies
  • Environment variables, including:
    • Remote address
    • Server name
    • Server port
    • Server protocol

Please be aware that sensitive information, such as user passwords or credit card numbers, may potentially be logged. Common security measures, such as protecting the Sentry installation, should be practiced. To enable this support, add the following line to Log4j configuration:

log4j.appender.sentry.jsonProcessors=net.kencochrane.raven.ext.ServletJSONProcessor

Then, add the following lines to web.xml:

<listener>
<listener-class>
net.kencochrane.raven.ext.RavenServletRequestListener
</listener-class>
</listener>

Installation

This version isn't available in the Central Maven repository yet. The easiest way to get started is to clone this repository and install the artifacts into your local repository or proxy like Nexus:

$ git clone https://github.com/kencochrane/raven-java.git
$ cd raven-java
$ mvn clean install

This will build and test the Raven client and Log4J appender and install it into your local repository. You shouldn't worry about stacktraces appearing in the output unless tests are failing; they are supposed to be there.

Then add the correct dependency to your POM file:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or if you simply want to log to Sentry from Log4J:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-log4j</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or Logback:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-logback</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

History

  • 2.0-SNAPSHOT

    • Version increment to reduce confusion about releases
    • Added Logback appender (thanks to ccouturi)
  • 1.0

    • Rewrite
    • Support tags
    • Added support for JSON processors (see bundled ServletJSONProcessor)
  • 0.6

    • Added support for sending messages through UDP
  • 0.5

    • Added async support
    • Fixed issue with parsing of path and port in DSN
  • 0.4

    • Added the ability to get the SENTRY_DSN from the ENV
    • Added RavenClient.captureMessage
    • Added RavenClient.captureException
  • 0.3

    • Added Maven support
    • Merged with log4sentry project by Kevin Wetzels
    • Added Proxy support
    • Added full stack trace to logs
  • 0.2

    • code refactor and cleanup
  • 0.1

    • initial version

Contributors

  • Ken Cochrane (@KenCochrane)
  • Kevin Wetzels (@roambe)
  • David Cramer (@zeeg)
  • Mark Philpot (@griphiam)
  • Brad Chen (@vvasabi)
  • @ccouturi

About

A Sentry client for Java

Resources

Stars

0 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Repository files navigation

Raven-Java

Raven-Java is a Java client for Sentry. Besides a regular client you can use within your application code, Raven-Java also provides the raven-log4j package you can use to send logging to Sentry via log4j and the raven-logback package to do the same through logback.

Raven-Java supports both HTTP(S) and UDP transport of messages.

Sentry Versions Supported

This client supports Sentry protocol version 2.0 (which is Sentry >= 2.0).

Since version 4.6.0 of Sentry, signed messages have been deprecated. If you still use an earlier version, have a look at the client options below to find out how to enable signed messages.


Using the client

importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// The DSN from Sentry: "http://public:private@host:port/1"StringrawDsn = args[0];
SentryDsndsn = SentryDsn.build(rawDsn);
Client = newClient(dsn);
client.captureMessage("Hello from Raven-Java!");
}
}

A full example is available in raven/src/main/test/net/kencochrane/raven/ClientExample.

Note that SentryDsn will first examine the environment variables and system properties for a variable called SENTRY_DSN. If such a variable is available, that value will be used instead of the DSN you supply (the rawDsn variable in the example above).

This allows flexible usage of the library on PaaS providers such as Heroku. This also means the above example can be simplified to the following if you specify SENTRY_DSN in your:

  • environment variables — e.g. export SENTRY_DSN=yoursentrydsn or setenv SENTRYDSN yoursentrydsn; or
  • system properties — -DSENTRY_DSN=yoursentrydsn
importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// DSN is determined by the client from system properties or envClient = newClient();
client.captureMessage("Hello from Raven-Java!");
}
}

Using the log4j appender

You can either utilize the net.kencochrane.raven.log4j.SentryAppender or net.kencochrane.raven.log4j.AsyncSentryAppender as an appender in your log4j configuration just like you would use any other appender.

log4j.appender.sentry=net.kencochrane.raven.log4j.SentryAppender
log4j.appender.sentry.sentryDsn=http://b4935bdd7862409:7a37d9ad47654281@localhost:8000/1

Like the client, these appenders will examine the system properties and environment variables for a better SENTRY_DSN candidate. Which log messages are ultimately sent to your Sentry instance, depends on the configuration of your Sentry appender. If you only want to send error messages, use the following:

log4j.appender.sentry.Threshold=ERROR

Asynchronous logging

If you use log4j's XML configuration, you can use its AsyncAppender to wrap Raven-Java's SentryAppender.

But even if you use a properties file to configure log4j, you can log asynchronously by using the net.kencochrane.raven.log4j.AsyncSentryAppender instead.


Using the logback appender

Make sure to use the raven-logback artifact and add something like the following to your logback configuration:

<appender name="SENTRY"
class="net.kencochrane.raven.logback.SentryAppender">
<sentryDsn>http://public:private@host:port/project</sentryDsn>
</appender>

Client configuration

Client configuration is completely driven through the Sentry DSN. The DSN you can copy-paste from your Sentry instance looks like this:

http://public:private@host:port/1

Changing the behavior of the client is done through the scheme and querystring of the DSN.

Transport protocols

HTTPS

If you're using https, your DSN should look like this:

https://public:private@host:port/1

Naive HTTPS

If you're using https with a wildcard certificate (which most Java versions can't handle) and you're too lazy to add the certificate to your truststore, you can tell the client to be naive and allow it to ignore the hostname verification:

naive+https://public:private@host:port/1

UDP

Prefer udp? Change your DSN to this:

udp://public:private@host:port/1

Asynchronous

The client can use a separate thread to actually send the messages to Sentry. To enable this feature, add async+ to the scheme in your DSN:

async+http://public:private@host:port/1
# Or
async+https://public:private@host:port/1
# Or
async+naive+https://public:private@host:port/1
# Or
async+udp://public:private@host:port/1

Adding other schemes

You can add your own custom transport and scheme through the register method of the client.

Client options

More client configuration can be specified through the querystring of the DSN like this:

http://public:private@host:port/1?optionA=true&optionB=20

Enabling signed messages

Signed messages have been deprecated in Sentry 4.6.0. If you're using an earlier version, you'll have to tell the client to sign messages through the option raven.includeSignature:

http://public:private@host:port/1?raven.includeSignature=true

HTTP/HTTPS timeout

The default timeout for HTTP/HTTPS transport is set to 10 seconds. If you want to change this value, use the raven.timeout option to specify the timeout in milliseconds.

http://public:private@host:port/1?raven.timeout=10000

Async queue configuration

When using the async transport (this is not the same as using the AsyncSentryAppender), you can configure the behavior of the underlying java.util.concurrent.BlockingQueue through the raven.waitWhenFull and raven.capacity options.

By default the client will not block when the queue is full and will use a queue at maximum capacity. If instead you want to use a blocking queue with a capacity of 20 messages, change your DSN to something like this:

async+http://public:private@host:port/1?raven.waitWhenFull=true&raven.capacity=20

Enabling ServletJSONProcessor

In a servlet environment, Raven can append request information to logs sent to Sentry when logs are created on request threads. Information sent to Sentry include:

  • Request URL
  • POST parameters
  • Request headers
  • Cookies
  • Environment variables, including:
    • Remote address
    • Server name
    • Server port
    • Server protocol

Please be aware that sensitive information, such as user passwords or credit card numbers, may potentially be logged. Common security measures, such as protecting the Sentry installation, should be practiced. To enable this support, add the following line to Log4j configuration:

log4j.appender.sentry.jsonProcessors=net.kencochrane.raven.ext.ServletJSONProcessor

Then, add the following lines to web.xml:

<listener>
<listener-class>
net.kencochrane.raven.ext.RavenServletRequestListener
</listener-class>
</listener>

Installation

This version isn't available in the Central Maven repository yet. The easiest way to get started is to clone this repository and install the artifacts into your local repository or proxy like Nexus:

$ git clone https://github.com/kencochrane/raven-java.git
$ cd raven-java
$ mvn clean install

This will build and test the Raven client and Log4J appender and install it into your local repository. You shouldn't worry about stacktraces appearing in the output unless tests are failing; they are supposed to be there.

Then add the correct dependency to your POM file:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or if you simply want to log to Sentry from Log4J:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-log4j</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or Logback:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-logback</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

History

  • 2.0-SNAPSHOT

    • Version increment to reduce confusion about releases
    • Added Logback appender (thanks to ccouturi)
  • 1.0

    • Rewrite
    • Support tags
    • Added support for JSON processors (see bundled ServletJSONProcessor)
  • 0.6

    • Added support for sending messages through UDP
  • 0.5

    • Added async support
    • Fixed issue with parsing of path and port in DSN
  • 0.4

    • Added the ability to get the SENTRY_DSN from the ENV
    • Added RavenClient.captureMessage
    • Added RavenClient.captureException
  • 0.3

    • Added Maven support
    • Merged with log4sentry project by Kevin Wetzels
    • Added Proxy support
    • Added full stack trace to logs
  • 0.2

    • code refactor and cleanup
  • 0.1

    • initial version

Contributors

  • Ken Cochrane (@KenCochrane)
  • Kevin Wetzels (@roambe)
  • David Cramer (@zeeg)
  • Mark Philpot (@griphiam)
  • Brad Chen (@vvasabi)
  • @ccouturi

About

A Sentry client for Java

Resources

Stars

0 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Repository files navigation

Raven-Java

Raven-Java is a Java client for Sentry. Besides a regular client you can use within your application code, Raven-Java also provides the raven-log4j package you can use to send logging to Sentry via log4j and the raven-logback package to do the same through logback.

Raven-Java supports both HTTP(S) and UDP transport of messages.

Sentry Versions Supported

This client supports Sentry protocol version 2.0 (which is Sentry >= 2.0).

Since version 4.6.0 of Sentry, signed messages have been deprecated. If you still use an earlier version, have a look at the client options below to find out how to enable signed messages.


Using the client

importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// The DSN from Sentry: "http://public:private@host:port/1"StringrawDsn = args[0];
SentryDsndsn = SentryDsn.build(rawDsn);
Client = newClient(dsn);
client.captureMessage("Hello from Raven-Java!");
}
}

A full example is available in raven/src/main/test/net/kencochrane/raven/ClientExample.

Note that SentryDsn will first examine the environment variables and system properties for a variable called SENTRY_DSN. If such a variable is available, that value will be used instead of the DSN you supply (the rawDsn variable in the example above).

This allows flexible usage of the library on PaaS providers such as Heroku. This also means the above example can be simplified to the following if you specify SENTRY_DSN in your:

  • environment variables — e.g. export SENTRY_DSN=yoursentrydsn or setenv SENTRYDSN yoursentrydsn; or
  • system properties — -DSENTRY_DSN=yoursentrydsn
importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// DSN is determined by the client from system properties or envClient = newClient();
client.captureMessage("Hello from Raven-Java!");
}
}

Using the log4j appender

You can either utilize the net.kencochrane.raven.log4j.SentryAppender or net.kencochrane.raven.log4j.AsyncSentryAppender as an appender in your log4j configuration just like you would use any other appender.

log4j.appender.sentry=net.kencochrane.raven.log4j.SentryAppender
log4j.appender.sentry.sentryDsn=http://b4935bdd7862409:7a37d9ad47654281@localhost:8000/1

Like the client, these appenders will examine the system properties and environment variables for a better SENTRY_DSN candidate. Which log messages are ultimately sent to your Sentry instance, depends on the configuration of your Sentry appender. If you only want to send error messages, use the following:

log4j.appender.sentry.Threshold=ERROR

Asynchronous logging

If you use log4j's XML configuration, you can use its AsyncAppender to wrap Raven-Java's SentryAppender.

But even if you use a properties file to configure log4j, you can log asynchronously by using the net.kencochrane.raven.log4j.AsyncSentryAppender instead.


Using the logback appender

Make sure to use the raven-logback artifact and add something like the following to your logback configuration:

<appender name="SENTRY"
class="net.kencochrane.raven.logback.SentryAppender">
<sentryDsn>http://public:private@host:port/project</sentryDsn>
</appender>

Client configuration

Client configuration is completely driven through the Sentry DSN. The DSN you can copy-paste from your Sentry instance looks like this:

http://public:private@host:port/1

Changing the behavior of the client is done through the scheme and querystring of the DSN.

Transport protocols

HTTPS

If you're using https, your DSN should look like this:

https://public:private@host:port/1

Naive HTTPS

If you're using https with a wildcard certificate (which most Java versions can't handle) and you're too lazy to add the certificate to your truststore, you can tell the client to be naive and allow it to ignore the hostname verification:

naive+https://public:private@host:port/1

UDP

Prefer udp? Change your DSN to this:

udp://public:private@host:port/1

Asynchronous

The client can use a separate thread to actually send the messages to Sentry. To enable this feature, add async+ to the scheme in your DSN:

async+http://public:private@host:port/1
# Or
async+https://public:private@host:port/1
# Or
async+naive+https://public:private@host:port/1
# Or
async+udp://public:private@host:port/1

Adding other schemes

You can add your own custom transport and scheme through the register method of the client.

Client options

More client configuration can be specified through the querystring of the DSN like this:

http://public:private@host:port/1?optionA=true&optionB=20

Enabling signed messages

Signed messages have been deprecated in Sentry 4.6.0. If you're using an earlier version, you'll have to tell the client to sign messages through the option raven.includeSignature:

http://public:private@host:port/1?raven.includeSignature=true

HTTP/HTTPS timeout

The default timeout for HTTP/HTTPS transport is set to 10 seconds. If you want to change this value, use the raven.timeout option to specify the timeout in milliseconds.

http://public:private@host:port/1?raven.timeout=10000

Async queue configuration

When using the async transport (this is not the same as using the AsyncSentryAppender), you can configure the behavior of the underlying java.util.concurrent.BlockingQueue through the raven.waitWhenFull and raven.capacity options.

By default the client will not block when the queue is full and will use a queue at maximum capacity. If instead you want to use a blocking queue with a capacity of 20 messages, change your DSN to something like this:

async+http://public:private@host:port/1?raven.waitWhenFull=true&raven.capacity=20

Enabling ServletJSONProcessor

In a servlet environment, Raven can append request information to logs sent to Sentry when logs are created on request threads. Information sent to Sentry include:

  • Request URL
  • POST parameters
  • Request headers
  • Cookies
  • Environment variables, including:
    • Remote address
    • Server name
    • Server port
    • Server protocol

Please be aware that sensitive information, such as user passwords or credit card numbers, may potentially be logged. Common security measures, such as protecting the Sentry installation, should be practiced. To enable this support, add the following line to Log4j configuration:

log4j.appender.sentry.jsonProcessors=net.kencochrane.raven.ext.ServletJSONProcessor

Then, add the following lines to web.xml:

<listener>
<listener-class>
net.kencochrane.raven.ext.RavenServletRequestListener
</listener-class>
</listener>

Installation

This version isn't available in the Central Maven repository yet. The easiest way to get started is to clone this repository and install the artifacts into your local repository or proxy like Nexus:

$ git clone https://github.com/kencochrane/raven-java.git
$ cd raven-java
$ mvn clean install

This will build and test the Raven client and Log4J appender and install it into your local repository. You shouldn't worry about stacktraces appearing in the output unless tests are failing; they are supposed to be there.

Then add the correct dependency to your POM file:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or if you simply want to log to Sentry from Log4J:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-log4j</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or Logback:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-logback</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

History

  • 2.0-SNAPSHOT

    • Version increment to reduce confusion about releases
    • Added Logback appender (thanks to ccouturi)
  • 1.0

    • Rewrite
    • Support tags
    • Added support for JSON processors (see bundled ServletJSONProcessor)
  • 0.6

    • Added support for sending messages through UDP
  • 0.5

    • Added async support
    • Fixed issue with parsing of path and port in DSN
  • 0.4

    • Added the ability to get the SENTRY_DSN from the ENV
    • Added RavenClient.captureMessage
    • Added RavenClient.captureException
  • 0.3

    • Added Maven support
    • Merged with log4sentry project by Kevin Wetzels
    • Added Proxy support
    • Added full stack trace to logs
  • 0.2

    • code refactor and cleanup
  • 0.1

    • initial version

Contributors

  • Ken Cochrane (@KenCochrane)
  • Kevin Wetzels (@roambe)
  • David Cramer (@zeeg)
  • Mark Philpot (@griphiam)
  • Brad Chen (@vvasabi)
  • @ccouturi

About

A Sentry client for Java

Resources

Stars

0 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Repository files navigation

Raven-Java

Raven-Java is a Java client for Sentry. Besides a regular client you can use within your application code, Raven-Java also provides the raven-log4j package you can use to send logging to Sentry via log4j and the raven-logback package to do the same through logback.

Raven-Java supports both HTTP(S) and UDP transport of messages.

Sentry Versions Supported

This client supports Sentry protocol version 2.0 (which is Sentry >= 2.0).

Since version 4.6.0 of Sentry, signed messages have been deprecated. If you still use an earlier version, have a look at the client options below to find out how to enable signed messages.


Using the client

importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// The DSN from Sentry: "http://public:private@host:port/1"StringrawDsn = args[0];
SentryDsndsn = SentryDsn.build(rawDsn);
Client = newClient(dsn);
client.captureMessage("Hello from Raven-Java!");
}
}

A full example is available in raven/src/main/test/net/kencochrane/raven/ClientExample.

Note that SentryDsn will first examine the environment variables and system properties for a variable called SENTRY_DSN. If such a variable is available, that value will be used instead of the DSN you supply (the rawDsn variable in the example above).

This allows flexible usage of the library on PaaS providers such as Heroku. This also means the above example can be simplified to the following if you specify SENTRY_DSN in your:

  • environment variables — e.g. export SENTRY_DSN=yoursentrydsn or setenv SENTRYDSN yoursentrydsn; or
  • system properties — -DSENTRY_DSN=yoursentrydsn
importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// DSN is determined by the client from system properties or envClient = newClient();
client.captureMessage("Hello from Raven-Java!");
}
}

Using the log4j appender

You can either utilize the net.kencochrane.raven.log4j.SentryAppender or net.kencochrane.raven.log4j.AsyncSentryAppender as an appender in your log4j configuration just like you would use any other appender.

log4j.appender.sentry=net.kencochrane.raven.log4j.SentryAppender
log4j.appender.sentry.sentryDsn=http://b4935bdd7862409:7a37d9ad47654281@localhost:8000/1

Like the client, these appenders will examine the system properties and environment variables for a better SENTRY_DSN candidate. Which log messages are ultimately sent to your Sentry instance, depends on the configuration of your Sentry appender. If you only want to send error messages, use the following:

log4j.appender.sentry.Threshold=ERROR

Asynchronous logging

If you use log4j's XML configuration, you can use its AsyncAppender to wrap Raven-Java's SentryAppender.

But even if you use a properties file to configure log4j, you can log asynchronously by using the net.kencochrane.raven.log4j.AsyncSentryAppender instead.


Using the logback appender

Make sure to use the raven-logback artifact and add something like the following to your logback configuration:

<appender name="SENTRY"
class="net.kencochrane.raven.logback.SentryAppender">
<sentryDsn>http://public:private@host:port/project</sentryDsn>
</appender>

Client configuration

Client configuration is completely driven through the Sentry DSN. The DSN you can copy-paste from your Sentry instance looks like this:

http://public:private@host:port/1

Changing the behavior of the client is done through the scheme and querystring of the DSN.

Transport protocols

HTTPS

If you're using https, your DSN should look like this:

https://public:private@host:port/1

Naive HTTPS

If you're using https with a wildcard certificate (which most Java versions can't handle) and you're too lazy to add the certificate to your truststore, you can tell the client to be naive and allow it to ignore the hostname verification:

naive+https://public:private@host:port/1

UDP

Prefer udp? Change your DSN to this:

udp://public:private@host:port/1

Asynchronous

The client can use a separate thread to actually send the messages to Sentry. To enable this feature, add async+ to the scheme in your DSN:

async+http://public:private@host:port/1
# Or
async+https://public:private@host:port/1
# Or
async+naive+https://public:private@host:port/1
# Or
async+udp://public:private@host:port/1

Adding other schemes

You can add your own custom transport and scheme through the register method of the client.

Client options

More client configuration can be specified through the querystring of the DSN like this:

http://public:private@host:port/1?optionA=true&optionB=20

Enabling signed messages

Signed messages have been deprecated in Sentry 4.6.0. If you're using an earlier version, you'll have to tell the client to sign messages through the option raven.includeSignature:

http://public:private@host:port/1?raven.includeSignature=true

HTTP/HTTPS timeout

The default timeout for HTTP/HTTPS transport is set to 10 seconds. If you want to change this value, use the raven.timeout option to specify the timeout in milliseconds.

http://public:private@host:port/1?raven.timeout=10000

Async queue configuration

When using the async transport (this is not the same as using the AsyncSentryAppender), you can configure the behavior of the underlying java.util.concurrent.BlockingQueue through the raven.waitWhenFull and raven.capacity options.

By default the client will not block when the queue is full and will use a queue at maximum capacity. If instead you want to use a blocking queue with a capacity of 20 messages, change your DSN to something like this:

async+http://public:private@host:port/1?raven.waitWhenFull=true&raven.capacity=20

Enabling ServletJSONProcessor

In a servlet environment, Raven can append request information to logs sent to Sentry when logs are created on request threads. Information sent to Sentry include:

  • Request URL
  • POST parameters
  • Request headers
  • Cookies
  • Environment variables, including:
    • Remote address
    • Server name
    • Server port
    • Server protocol

Please be aware that sensitive information, such as user passwords or credit card numbers, may potentially be logged. Common security measures, such as protecting the Sentry installation, should be practiced. To enable this support, add the following line to Log4j configuration:

log4j.appender.sentry.jsonProcessors=net.kencochrane.raven.ext.ServletJSONProcessor

Then, add the following lines to web.xml:

<listener>
<listener-class>
net.kencochrane.raven.ext.RavenServletRequestListener
</listener-class>
</listener>

Installation

This version isn't available in the Central Maven repository yet. The easiest way to get started is to clone this repository and install the artifacts into your local repository or proxy like Nexus:

$ git clone https://github.com/kencochrane/raven-java.git
$ cd raven-java
$ mvn clean install

This will build and test the Raven client and Log4J appender and install it into your local repository. You shouldn't worry about stacktraces appearing in the output unless tests are failing; they are supposed to be there.

Then add the correct dependency to your POM file:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or if you simply want to log to Sentry from Log4J:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-log4j</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or Logback:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-logback</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

History

  • 2.0-SNAPSHOT

    • Version increment to reduce confusion about releases
    • Added Logback appender (thanks to ccouturi)
  • 1.0

    • Rewrite
    • Support tags
    • Added support for JSON processors (see bundled ServletJSONProcessor)
  • 0.6

    • Added support for sending messages through UDP
  • 0.5

    • Added async support
    • Fixed issue with parsing of path and port in DSN
  • 0.4

    • Added the ability to get the SENTRY_DSN from the ENV
    • Added RavenClient.captureMessage
    • Added RavenClient.captureException
  • 0.3

    • Added Maven support
    • Merged with log4sentry project by Kevin Wetzels
    • Added Proxy support
    • Added full stack trace to logs
  • 0.2

    • code refactor and cleanup
  • 0.1

    • initial version

Contributors

  • Ken Cochrane (@KenCochrane)
  • Kevin Wetzels (@roambe)
  • David Cramer (@zeeg)
  • Mark Philpot (@griphiam)
  • Brad Chen (@vvasabi)
  • @ccouturi

About

A Sentry client for Java

Resources

Stars

0 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Repository files navigation

Raven-Java

Raven-Java is a Java client for Sentry. Besides a regular client you can use within your application code, Raven-Java also provides the raven-log4j package you can use to send logging to Sentry via log4j and the raven-logback package to do the same through logback.

Raven-Java supports both HTTP(S) and UDP transport of messages.

Sentry Versions Supported

This client supports Sentry protocol version 2.0 (which is Sentry >= 2.0).

Since version 4.6.0 of Sentry, signed messages have been deprecated. If you still use an earlier version, have a look at the client options below to find out how to enable signed messages.


Using the client

importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// The DSN from Sentry: "http://public:private@host:port/1"StringrawDsn = args[0];
SentryDsndsn = SentryDsn.build(rawDsn);
Client = newClient(dsn);
client.captureMessage("Hello from Raven-Java!");
}
}

A full example is available in raven/src/main/test/net/kencochrane/raven/ClientExample.

Note that SentryDsn will first examine the environment variables and system properties for a variable called SENTRY_DSN. If such a variable is available, that value will be used instead of the DSN you supply (the rawDsn variable in the example above).

This allows flexible usage of the library on PaaS providers such as Heroku. This also means the above example can be simplified to the following if you specify SENTRY_DSN in your:

  • environment variables — e.g. export SENTRY_DSN=yoursentrydsn or setenv SENTRYDSN yoursentrydsn; or
  • system properties — -DSENTRY_DSN=yoursentrydsn
importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// DSN is determined by the client from system properties or envClient = newClient();
client.captureMessage("Hello from Raven-Java!");
}
}

Using the log4j appender

You can either utilize the net.kencochrane.raven.log4j.SentryAppender or net.kencochrane.raven.log4j.AsyncSentryAppender as an appender in your log4j configuration just like you would use any other appender.

log4j.appender.sentry=net.kencochrane.raven.log4j.SentryAppender
log4j.appender.sentry.sentryDsn=http://b4935bdd7862409:7a37d9ad47654281@localhost:8000/1

Like the client, these appenders will examine the system properties and environment variables for a better SENTRY_DSN candidate. Which log messages are ultimately sent to your Sentry instance, depends on the configuration of your Sentry appender. If you only want to send error messages, use the following:

log4j.appender.sentry.Threshold=ERROR

Asynchronous logging

If you use log4j's XML configuration, you can use its AsyncAppender to wrap Raven-Java's SentryAppender.

But even if you use a properties file to configure log4j, you can log asynchronously by using the net.kencochrane.raven.log4j.AsyncSentryAppender instead.


Using the logback appender

Make sure to use the raven-logback artifact and add something like the following to your logback configuration:

<appender name="SENTRY"
class="net.kencochrane.raven.logback.SentryAppender">
<sentryDsn>http://public:private@host:port/project</sentryDsn>
</appender>

Client configuration

Client configuration is completely driven through the Sentry DSN. The DSN you can copy-paste from your Sentry instance looks like this:

http://public:private@host:port/1

Changing the behavior of the client is done through the scheme and querystring of the DSN.

Transport protocols

HTTPS

If you're using https, your DSN should look like this:

https://public:private@host:port/1

Naive HTTPS

If you're using https with a wildcard certificate (which most Java versions can't handle) and you're too lazy to add the certificate to your truststore, you can tell the client to be naive and allow it to ignore the hostname verification:

naive+https://public:private@host:port/1

UDP

Prefer udp? Change your DSN to this:

udp://public:private@host:port/1

Asynchronous

The client can use a separate thread to actually send the messages to Sentry. To enable this feature, add async+ to the scheme in your DSN:

async+http://public:private@host:port/1
# Or
async+https://public:private@host:port/1
# Or
async+naive+https://public:private@host:port/1
# Or
async+udp://public:private@host:port/1

Adding other schemes

You can add your own custom transport and scheme through the register method of the client.

Client options

More client configuration can be specified through the querystring of the DSN like this:

http://public:private@host:port/1?optionA=true&optionB=20

Enabling signed messages

Signed messages have been deprecated in Sentry 4.6.0. If you're using an earlier version, you'll have to tell the client to sign messages through the option raven.includeSignature:

http://public:private@host:port/1?raven.includeSignature=true

HTTP/HTTPS timeout

The default timeout for HTTP/HTTPS transport is set to 10 seconds. If you want to change this value, use the raven.timeout option to specify the timeout in milliseconds.

http://public:private@host:port/1?raven.timeout=10000

Async queue configuration

When using the async transport (this is not the same as using the AsyncSentryAppender), you can configure the behavior of the underlying java.util.concurrent.BlockingQueue through the raven.waitWhenFull and raven.capacity options.

By default the client will not block when the queue is full and will use a queue at maximum capacity. If instead you want to use a blocking queue with a capacity of 20 messages, change your DSN to something like this:

async+http://public:private@host:port/1?raven.waitWhenFull=true&raven.capacity=20

Enabling ServletJSONProcessor

In a servlet environment, Raven can append request information to logs sent to Sentry when logs are created on request threads. Information sent to Sentry include:

  • Request URL
  • POST parameters
  • Request headers
  • Cookies
  • Environment variables, including:
    • Remote address
    • Server name
    • Server port
    • Server protocol

Please be aware that sensitive information, such as user passwords or credit card numbers, may potentially be logged. Common security measures, such as protecting the Sentry installation, should be practiced. To enable this support, add the following line to Log4j configuration:

log4j.appender.sentry.jsonProcessors=net.kencochrane.raven.ext.ServletJSONProcessor

Then, add the following lines to web.xml:

<listener>
<listener-class>
net.kencochrane.raven.ext.RavenServletRequestListener
</listener-class>
</listener>

Installation

This version isn't available in the Central Maven repository yet. The easiest way to get started is to clone this repository and install the artifacts into your local repository or proxy like Nexus:

$ git clone https://github.com/kencochrane/raven-java.git
$ cd raven-java
$ mvn clean install

This will build and test the Raven client and Log4J appender and install it into your local repository. You shouldn't worry about stacktraces appearing in the output unless tests are failing; they are supposed to be there.

Then add the correct dependency to your POM file:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or if you simply want to log to Sentry from Log4J:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-log4j</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or Logback:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-logback</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

History

  • 2.0-SNAPSHOT

    • Version increment to reduce confusion about releases
    • Added Logback appender (thanks to ccouturi)
  • 1.0

    • Rewrite
    • Support tags
    • Added support for JSON processors (see bundled ServletJSONProcessor)
  • 0.6

    • Added support for sending messages through UDP
  • 0.5

    • Added async support
    • Fixed issue with parsing of path and port in DSN
  • 0.4

    • Added the ability to get the SENTRY_DSN from the ENV
    • Added RavenClient.captureMessage
    • Added RavenClient.captureException
  • 0.3

    • Added Maven support
    • Merged with log4sentry project by Kevin Wetzels
    • Added Proxy support
    • Added full stack trace to logs
  • 0.2

    • code refactor and cleanup
  • 0.1

    • initial version

Contributors

  • Ken Cochrane (@KenCochrane)
  • Kevin Wetzels (@roambe)
  • David Cramer (@zeeg)
  • Mark Philpot (@griphiam)
  • Brad Chen (@vvasabi)
  • @ccouturi

About

A Sentry client for Java

Resources

Stars

0 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Repository files navigation

Raven-Java

Raven-Java is a Java client for Sentry. Besides a regular client you can use within your application code, Raven-Java also provides the raven-log4j package you can use to send logging to Sentry via log4j and the raven-logback package to do the same through logback.

Raven-Java supports both HTTP(S) and UDP transport of messages.

Sentry Versions Supported

This client supports Sentry protocol version 2.0 (which is Sentry >= 2.0).

Since version 4.6.0 of Sentry, signed messages have been deprecated. If you still use an earlier version, have a look at the client options below to find out how to enable signed messages.


Using the client

importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// The DSN from Sentry: "http://public:private@host:port/1"StringrawDsn = args[0];
SentryDsndsn = SentryDsn.build(rawDsn);
Client = newClient(dsn);
client.captureMessage("Hello from Raven-Java!");
}
}

A full example is available in raven/src/main/test/net/kencochrane/raven/ClientExample.

Note that SentryDsn will first examine the environment variables and system properties for a variable called SENTRY_DSN. If such a variable is available, that value will be used instead of the DSN you supply (the rawDsn variable in the example above).

This allows flexible usage of the library on PaaS providers such as Heroku. This also means the above example can be simplified to the following if you specify SENTRY_DSN in your:

  • environment variables — e.g. export SENTRY_DSN=yoursentrydsn or setenv SENTRYDSN yoursentrydsn; or
  • system properties — -DSENTRY_DSN=yoursentrydsn
importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// DSN is determined by the client from system properties or envClient = newClient();
client.captureMessage("Hello from Raven-Java!");
}
}

Using the log4j appender

You can either utilize the net.kencochrane.raven.log4j.SentryAppender or net.kencochrane.raven.log4j.AsyncSentryAppender as an appender in your log4j configuration just like you would use any other appender.

log4j.appender.sentry=net.kencochrane.raven.log4j.SentryAppender
log4j.appender.sentry.sentryDsn=http://b4935bdd7862409:7a37d9ad47654281@localhost:8000/1

Like the client, these appenders will examine the system properties and environment variables for a better SENTRY_DSN candidate. Which log messages are ultimately sent to your Sentry instance, depends on the configuration of your Sentry appender. If you only want to send error messages, use the following:

log4j.appender.sentry.Threshold=ERROR

Asynchronous logging

If you use log4j's XML configuration, you can use its AsyncAppender to wrap Raven-Java's SentryAppender.

But even if you use a properties file to configure log4j, you can log asynchronously by using the net.kencochrane.raven.log4j.AsyncSentryAppender instead.


Using the logback appender

Make sure to use the raven-logback artifact and add something like the following to your logback configuration:

<appender name="SENTRY"
class="net.kencochrane.raven.logback.SentryAppender">
<sentryDsn>http://public:private@host:port/project</sentryDsn>
</appender>

Client configuration

Client configuration is completely driven through the Sentry DSN. The DSN you can copy-paste from your Sentry instance looks like this:

http://public:private@host:port/1

Changing the behavior of the client is done through the scheme and querystring of the DSN.

Transport protocols

HTTPS

If you're using https, your DSN should look like this:

https://public:private@host:port/1

Naive HTTPS

If you're using https with a wildcard certificate (which most Java versions can't handle) and you're too lazy to add the certificate to your truststore, you can tell the client to be naive and allow it to ignore the hostname verification:

naive+https://public:private@host:port/1

UDP

Prefer udp? Change your DSN to this:

udp://public:private@host:port/1

Asynchronous

The client can use a separate thread to actually send the messages to Sentry. To enable this feature, add async+ to the scheme in your DSN:

async+http://public:private@host:port/1
# Or
async+https://public:private@host:port/1
# Or
async+naive+https://public:private@host:port/1
# Or
async+udp://public:private@host:port/1

Adding other schemes

You can add your own custom transport and scheme through the register method of the client.

Client options

More client configuration can be specified through the querystring of the DSN like this:

http://public:private@host:port/1?optionA=true&optionB=20

Enabling signed messages

Signed messages have been deprecated in Sentry 4.6.0. If you're using an earlier version, you'll have to tell the client to sign messages through the option raven.includeSignature:

http://public:private@host:port/1?raven.includeSignature=true

HTTP/HTTPS timeout

The default timeout for HTTP/HTTPS transport is set to 10 seconds. If you want to change this value, use the raven.timeout option to specify the timeout in milliseconds.

http://public:private@host:port/1?raven.timeout=10000

Async queue configuration

When using the async transport (this is not the same as using the AsyncSentryAppender), you can configure the behavior of the underlying java.util.concurrent.BlockingQueue through the raven.waitWhenFull and raven.capacity options.

By default the client will not block when the queue is full and will use a queue at maximum capacity. If instead you want to use a blocking queue with a capacity of 20 messages, change your DSN to something like this:

async+http://public:private@host:port/1?raven.waitWhenFull=true&raven.capacity=20

Enabling ServletJSONProcessor

In a servlet environment, Raven can append request information to logs sent to Sentry when logs are created on request threads. Information sent to Sentry include:

  • Request URL
  • POST parameters
  • Request headers
  • Cookies
  • Environment variables, including:
    • Remote address
    • Server name
    • Server port
    • Server protocol

Please be aware that sensitive information, such as user passwords or credit card numbers, may potentially be logged. Common security measures, such as protecting the Sentry installation, should be practiced. To enable this support, add the following line to Log4j configuration:

log4j.appender.sentry.jsonProcessors=net.kencochrane.raven.ext.ServletJSONProcessor

Then, add the following lines to web.xml:

<listener>
<listener-class>
net.kencochrane.raven.ext.RavenServletRequestListener
</listener-class>
</listener>

Installation

This version isn't available in the Central Maven repository yet. The easiest way to get started is to clone this repository and install the artifacts into your local repository or proxy like Nexus:

$ git clone https://github.com/kencochrane/raven-java.git
$ cd raven-java
$ mvn clean install

This will build and test the Raven client and Log4J appender and install it into your local repository. You shouldn't worry about stacktraces appearing in the output unless tests are failing; they are supposed to be there.

Then add the correct dependency to your POM file:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or if you simply want to log to Sentry from Log4J:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-log4j</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or Logback:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-logback</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

History

  • 2.0-SNAPSHOT

    • Version increment to reduce confusion about releases
    • Added Logback appender (thanks to ccouturi)
  • 1.0

    • Rewrite
    • Support tags
    • Added support for JSON processors (see bundled ServletJSONProcessor)
  • 0.6

    • Added support for sending messages through UDP
  • 0.5

    • Added async support
    • Fixed issue with parsing of path and port in DSN
  • 0.4

    • Added the ability to get the SENTRY_DSN from the ENV
    • Added RavenClient.captureMessage
    • Added RavenClient.captureException
  • 0.3

    • Added Maven support
    • Merged with log4sentry project by Kevin Wetzels
    • Added Proxy support
    • Added full stack trace to logs
  • 0.2

    • code refactor and cleanup
  • 0.1

    • initial version

Contributors

  • Ken Cochrane (@KenCochrane)
  • Kevin Wetzels (@roambe)
  • David Cramer (@zeeg)
  • Mark Philpot (@griphiam)
  • Brad Chen (@vvasabi)
  • @ccouturi

About

A Sentry client for Java

Resources

Stars

0 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Repository files navigation

Raven-Java

Raven-Java is a Java client for Sentry. Besides a regular client you can use within your application code, Raven-Java also provides the raven-log4j package you can use to send logging to Sentry via log4j and the raven-logback package to do the same through logback.

Raven-Java supports both HTTP(S) and UDP transport of messages.

Sentry Versions Supported

This client supports Sentry protocol version 2.0 (which is Sentry >= 2.0).

Since version 4.6.0 of Sentry, signed messages have been deprecated. If you still use an earlier version, have a look at the client options below to find out how to enable signed messages.


Using the client

importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// The DSN from Sentry: "http://public:private@host:port/1"StringrawDsn = args[0];
SentryDsndsn = SentryDsn.build(rawDsn);
Client = newClient(dsn);
client.captureMessage("Hello from Raven-Java!");
}
}

A full example is available in raven/src/main/test/net/kencochrane/raven/ClientExample.

Note that SentryDsn will first examine the environment variables and system properties for a variable called SENTRY_DSN. If such a variable is available, that value will be used instead of the DSN you supply (the rawDsn variable in the example above).

This allows flexible usage of the library on PaaS providers such as Heroku. This also means the above example can be simplified to the following if you specify SENTRY_DSN in your:

  • environment variables — e.g. export SENTRY_DSN=yoursentrydsn or setenv SENTRYDSN yoursentrydsn; or
  • system properties — -DSENTRY_DSN=yoursentrydsn
importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// DSN is determined by the client from system properties or envClient = newClient();
client.captureMessage("Hello from Raven-Java!");
}
}

Using the log4j appender

You can either utilize the net.kencochrane.raven.log4j.SentryAppender or net.kencochrane.raven.log4j.AsyncSentryAppender as an appender in your log4j configuration just like you would use any other appender.

log4j.appender.sentry=net.kencochrane.raven.log4j.SentryAppender
log4j.appender.sentry.sentryDsn=http://b4935bdd7862409:7a37d9ad47654281@localhost:8000/1

Like the client, these appenders will examine the system properties and environment variables for a better SENTRY_DSN candidate. Which log messages are ultimately sent to your Sentry instance, depends on the configuration of your Sentry appender. If you only want to send error messages, use the following:

log4j.appender.sentry.Threshold=ERROR

Asynchronous logging

If you use log4j's XML configuration, you can use its AsyncAppender to wrap Raven-Java's SentryAppender.

But even if you use a properties file to configure log4j, you can log asynchronously by using the net.kencochrane.raven.log4j.AsyncSentryAppender instead.


Using the logback appender

Make sure to use the raven-logback artifact and add something like the following to your logback configuration:

<appender name="SENTRY"
class="net.kencochrane.raven.logback.SentryAppender">
<sentryDsn>http://public:private@host:port/project</sentryDsn>
</appender>

Client configuration

Client configuration is completely driven through the Sentry DSN. The DSN you can copy-paste from your Sentry instance looks like this:

http://public:private@host:port/1

Changing the behavior of the client is done through the scheme and querystring of the DSN.

Transport protocols

HTTPS

If you're using https, your DSN should look like this:

https://public:private@host:port/1

Naive HTTPS

If you're using https with a wildcard certificate (which most Java versions can't handle) and you're too lazy to add the certificate to your truststore, you can tell the client to be naive and allow it to ignore the hostname verification:

naive+https://public:private@host:port/1

UDP

Prefer udp? Change your DSN to this:

udp://public:private@host:port/1

Asynchronous

The client can use a separate thread to actually send the messages to Sentry. To enable this feature, add async+ to the scheme in your DSN:

async+http://public:private@host:port/1
# Or
async+https://public:private@host:port/1
# Or
async+naive+https://public:private@host:port/1
# Or
async+udp://public:private@host:port/1

Adding other schemes

You can add your own custom transport and scheme through the register method of the client.

Client options

More client configuration can be specified through the querystring of the DSN like this:

http://public:private@host:port/1?optionA=true&optionB=20

Enabling signed messages

Signed messages have been deprecated in Sentry 4.6.0. If you're using an earlier version, you'll have to tell the client to sign messages through the option raven.includeSignature:

http://public:private@host:port/1?raven.includeSignature=true

HTTP/HTTPS timeout

The default timeout for HTTP/HTTPS transport is set to 10 seconds. If you want to change this value, use the raven.timeout option to specify the timeout in milliseconds.

http://public:private@host:port/1?raven.timeout=10000

Async queue configuration

When using the async transport (this is not the same as using the AsyncSentryAppender), you can configure the behavior of the underlying java.util.concurrent.BlockingQueue through the raven.waitWhenFull and raven.capacity options.

By default the client will not block when the queue is full and will use a queue at maximum capacity. If instead you want to use a blocking queue with a capacity of 20 messages, change your DSN to something like this:

async+http://public:private@host:port/1?raven.waitWhenFull=true&raven.capacity=20

Enabling ServletJSONProcessor

In a servlet environment, Raven can append request information to logs sent to Sentry when logs are created on request threads. Information sent to Sentry include:

  • Request URL
  • POST parameters
  • Request headers
  • Cookies
  • Environment variables, including:
    • Remote address
    • Server name
    • Server port
    • Server protocol

Please be aware that sensitive information, such as user passwords or credit card numbers, may potentially be logged. Common security measures, such as protecting the Sentry installation, should be practiced. To enable this support, add the following line to Log4j configuration:

log4j.appender.sentry.jsonProcessors=net.kencochrane.raven.ext.ServletJSONProcessor

Then, add the following lines to web.xml:

<listener>
<listener-class>
net.kencochrane.raven.ext.RavenServletRequestListener
</listener-class>
</listener>

Installation

This version isn't available in the Central Maven repository yet. The easiest way to get started is to clone this repository and install the artifacts into your local repository or proxy like Nexus:

$ git clone https://github.com/kencochrane/raven-java.git
$ cd raven-java
$ mvn clean install

This will build and test the Raven client and Log4J appender and install it into your local repository. You shouldn't worry about stacktraces appearing in the output unless tests are failing; they are supposed to be there.

Then add the correct dependency to your POM file:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or if you simply want to log to Sentry from Log4J:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-log4j</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or Logback:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-logback</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

History

  • 2.0-SNAPSHOT

    • Version increment to reduce confusion about releases
    • Added Logback appender (thanks to ccouturi)
  • 1.0

    • Rewrite
    • Support tags
    • Added support for JSON processors (see bundled ServletJSONProcessor)
  • 0.6

    • Added support for sending messages through UDP
  • 0.5

    • Added async support
    • Fixed issue with parsing of path and port in DSN
  • 0.4

    • Added the ability to get the SENTRY_DSN from the ENV
    • Added RavenClient.captureMessage
    • Added RavenClient.captureException
  • 0.3

    • Added Maven support
    • Merged with log4sentry project by Kevin Wetzels
    • Added Proxy support
    • Added full stack trace to logs
  • 0.2

    • code refactor and cleanup
  • 0.1

    • initial version

Contributors

  • Ken Cochrane (@KenCochrane)
  • Kevin Wetzels (@roambe)
  • David Cramer (@zeeg)
  • Mark Philpot (@griphiam)
  • Brad Chen (@vvasabi)
  • @ccouturi

About

A Sentry client for Java

Resources

Stars

0 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Oct 30, 2023. It is now read-only.

Repository files navigation

Raven-Java

Raven-Java is a Java client for Sentry. Besides a regular client you can use within your application code, Raven-Java also provides the raven-log4j package you can use to send logging to Sentry via log4j and the raven-logback package to do the same through logback.

Raven-Java supports both HTTP(S) and UDP transport of messages.

Sentry Versions Supported

This client supports Sentry protocol version 2.0 (which is Sentry >= 2.0).

Since version 4.6.0 of Sentry, signed messages have been deprecated. If you still use an earlier version, have a look at the client options below to find out how to enable signed messages.


Using the client

importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// The DSN from Sentry: "http://public:private@host:port/1"StringrawDsn = args[0];
SentryDsndsn = SentryDsn.build(rawDsn);
Client = newClient(dsn);
client.captureMessage("Hello from Raven-Java!");
}
}

A full example is available in raven/src/main/test/net/kencochrane/raven/ClientExample.

Note that SentryDsn will first examine the environment variables and system properties for a variable called SENTRY_DSN. If such a variable is available, that value will be used instead of the DSN you supply (the rawDsn variable in the example above).

This allows flexible usage of the library on PaaS providers such as Heroku. This also means the above example can be simplified to the following if you specify SENTRY_DSN in your:

  • environment variables — e.g. export SENTRY_DSN=yoursentrydsn or setenv SENTRYDSN yoursentrydsn; or
  • system properties — -DSENTRY_DSN=yoursentrydsn
importnet.kencochrane.raven.Clientimportnet.kencochrane.raven.SentryDsnpublicclassExample {
publicstaticvoidmain(String[] args) {
// DSN is determined by the client from system properties or envClient = newClient();
client.captureMessage("Hello from Raven-Java!");
}
}

Using the log4j appender

You can either utilize the net.kencochrane.raven.log4j.SentryAppender or net.kencochrane.raven.log4j.AsyncSentryAppender as an appender in your log4j configuration just like you would use any other appender.

log4j.appender.sentry=net.kencochrane.raven.log4j.SentryAppender
log4j.appender.sentry.sentryDsn=http://b4935bdd7862409:7a37d9ad47654281@localhost:8000/1

Like the client, these appenders will examine the system properties and environment variables for a better SENTRY_DSN candidate. Which log messages are ultimately sent to your Sentry instance, depends on the configuration of your Sentry appender. If you only want to send error messages, use the following:

log4j.appender.sentry.Threshold=ERROR

Asynchronous logging

If you use log4j's XML configuration, you can use its AsyncAppender to wrap Raven-Java's SentryAppender.

But even if you use a properties file to configure log4j, you can log asynchronously by using the net.kencochrane.raven.log4j.AsyncSentryAppender instead.


Using the logback appender

Make sure to use the raven-logback artifact and add something like the following to your logback configuration:

<appender name="SENTRY"
class="net.kencochrane.raven.logback.SentryAppender">
<sentryDsn>http://public:private@host:port/project</sentryDsn>
</appender>

Client configuration

Client configuration is completely driven through the Sentry DSN. The DSN you can copy-paste from your Sentry instance looks like this:

http://public:private@host:port/1

Changing the behavior of the client is done through the scheme and querystring of the DSN.

Transport protocols

HTTPS

If you're using https, your DSN should look like this:

https://public:private@host:port/1

Naive HTTPS

If you're using https with a wildcard certificate (which most Java versions can't handle) and you're too lazy to add the certificate to your truststore, you can tell the client to be naive and allow it to ignore the hostname verification:

naive+https://public:private@host:port/1

UDP

Prefer udp? Change your DSN to this:

udp://public:private@host:port/1

Asynchronous

The client can use a separate thread to actually send the messages to Sentry. To enable this feature, add async+ to the scheme in your DSN:

async+http://public:private@host:port/1
# Or
async+https://public:private@host:port/1
# Or
async+naive+https://public:private@host:port/1
# Or
async+udp://public:private@host:port/1

Adding other schemes

You can add your own custom transport and scheme through the register method of the client.

Client options

More client configuration can be specified through the querystring of the DSN like this:

http://public:private@host:port/1?optionA=true&optionB=20

Enabling signed messages

Signed messages have been deprecated in Sentry 4.6.0. If you're using an earlier version, you'll have to tell the client to sign messages through the option raven.includeSignature:

http://public:private@host:port/1?raven.includeSignature=true

HTTP/HTTPS timeout

The default timeout for HTTP/HTTPS transport is set to 10 seconds. If you want to change this value, use the raven.timeout option to specify the timeout in milliseconds.

http://public:private@host:port/1?raven.timeout=10000

Async queue configuration

When using the async transport (this is not the same as using the AsyncSentryAppender), you can configure the behavior of the underlying java.util.concurrent.BlockingQueue through the raven.waitWhenFull and raven.capacity options.

By default the client will not block when the queue is full and will use a queue at maximum capacity. If instead you want to use a blocking queue with a capacity of 20 messages, change your DSN to something like this:

async+http://public:private@host:port/1?raven.waitWhenFull=true&raven.capacity=20

Enabling ServletJSONProcessor

In a servlet environment, Raven can append request information to logs sent to Sentry when logs are created on request threads. Information sent to Sentry include:

  • Request URL
  • POST parameters
  • Request headers
  • Cookies
  • Environment variables, including:
    • Remote address
    • Server name
    • Server port
    • Server protocol

Please be aware that sensitive information, such as user passwords or credit card numbers, may potentially be logged. Common security measures, such as protecting the Sentry installation, should be practiced. To enable this support, add the following line to Log4j configuration:

log4j.appender.sentry.jsonProcessors=net.kencochrane.raven.ext.ServletJSONProcessor

Then, add the following lines to web.xml:

<listener>
<listener-class>
net.kencochrane.raven.ext.RavenServletRequestListener
</listener-class>
</listener>

Installation

This version isn't available in the Central Maven repository yet. The easiest way to get started is to clone this repository and install the artifacts into your local repository or proxy like Nexus:

$ git clone https://github.com/kencochrane/raven-java.git
$ cd raven-java
$ mvn clean install

This will build and test the Raven client and Log4J appender and install it into your local repository. You shouldn't worry about stacktraces appearing in the output unless tests are failing; they are supposed to be there.

Then add the correct dependency to your POM file:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or if you simply want to log to Sentry from Log4J:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-log4j</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

Or Logback:

<dependency>
<groupId>net.kencochrane</groupId>
<artifactId>raven-logback</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>

History

  • 2.0-SNAPSHOT

    • Version increment to reduce confusion about releases
    • Added Logback appender (thanks to ccouturi)
  • 1.0

    • Rewrite
    • Support tags
    • Added support for JSON processors (see bundled ServletJSONProcessor)
  • 0.6

    • Added support for sending messages through UDP
  • 0.5

    • Added async support
    • Fixed issue with parsing of path and port in DSN
  • 0.4

    • Added the ability to get the SENTRY_DSN from the ENV
    • Added RavenClient.captureMessage
    • Added RavenClient.captureException
  • 0.3

    • Added Maven support
    • Merged with log4sentry project by Kevin Wetzels
    • Added Proxy support
    • Added full stack trace to logs
  • 0.2

    • code refactor and cleanup
  • 0.1

    • initial version

Contributors

  • Ken Cochrane (@KenCochrane)
  • Kevin Wetzels (@roambe)
  • David Cramer (@zeeg)
  • Mark Philpot (@griphiam)
  • Brad Chen (@vvasabi)
  • @ccouturi

About

A Sentry client for Java

Resources

Stars

0 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages