码迷,mamicode.com
首页 > 其他好文 > 详细

项目集成sentry

时间:2019-01-02 19:25:02      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:ext   分享图片   efault   根据   set   环境   basic   maven   height   

本文章将介绍基于Sentry官方提供的在线服务集成sentry,本地搭建sentry将在下篇文章中介绍。

Sentry是个什么东西,自行百度了解。

1、注册,登录

网址:https://sentry.io/
注册一个账号 

技术分享图片
 
2、创建一个project 
技术分享图片

 

3、获取project的DSN

技术分享图片

 

4、maven配置依赖

<dependency>
    <groupId>io.sentry</groupId>
    <artifactId>sentry-log4j</artifactId>
    <version>1.7.10</version>
</dependency>

普通java项目需要引入的jar包包括:sentry-1.7.16.jar、sentry-log4j-1.7.17-SNAPSHOT.jar、jackson-annotations-2.1.0.jar、jackson-core-2.1.2.jar、jackson-databind-2.1.0.jar等,根据需要引入。

5、log4j集成sentry时需要在log4j中增加下列配置:

# Enable the Console and Sentry appenders
log4j.rootLogger=INFO, Console, Sentry

# Configure the Console appender
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{HH:mm:ss.SSS} [%t] %-5p: %m%n

# Configure the Sentry appender, overriding the logging threshold to the WARN level
log4j.appender.Sentry=io.sentry.log4j.SentryAppender
log4j.appender.Sentry.threshold=WARN

如果是log4j.xml,则

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
    xmlns:log4j=‘http://jakarta.apache.org/log4j/‘>

    <!-- Configure the Console appender -->
    <appender name="Console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                   value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <!-- Configure the Sentry appender, overriding the logging threshold to the WARN level -->
    <appender name="Sentry" class="io.sentry.log4j.SentryAppender">
        <!-- Override the Sentry handler log level to WARN -->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="levelMin" value="WARN" />
        </filter>
    </appender>

    <!-- Enable the Console and Sentry appenders, Console is provided as an example
 of a non-Sentry logger that is set to a different logging threshold -->
    <root level="INFO">
        <appender-ref ref="Console" />
        <appender-ref ref="Sentry" />
    </root>
</log4j:configuration>

如果指定sentrylogger形式的日志才需要发送到sentry,其他日志不需要发送时,则按照下面的格式配置:

log4j.logger.sentrylogger=INFO,Sentry

## Enable the Console and Sentry appenders
#log4j.rootLogger=INFO, Console, Sentry
#
## Configure the Console appender
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{HH:mm:ss.SSS} [%t] %-5p: %m%n
##
## Configure the Sentry appender, overriding the logging threshold to the INFO level 
log4j.appender.Sentry
=io.sentry.log4j.SentryAppender log4j.appender.Sentry.threshold=INFO

 

6、设置DSN

在文件系统或类路径上的属性文件中(默认为sentry.properties):

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

通过Java系统属性(在Android上不可用):

-Dsentry.dsn=https://public:private@host:port/1 -jar app.jar

通过系统环境变量(在Android上不可用):

SENTRY_DSN=https://public:private@host:port/1 java -jar app.jar

代码中:

import io.sentry.Sentry;
 
Sentry.init("https://public:private@host:port/1");

 

7、demo代码:

package io.sentry.example.basic;

import io.sentry.Sentry;
import io.sentry.SentryClient;
import io.sentry.SentryClientFactory;
import io.sentry.context.Context;
import io.sentry.event.BreadcrumbBuilder;
import io.sentry.event.UserBuilder;

public class MyClass {
    private static SentryClient sentry;

    public static void main(String... args) {
        /*
        It is recommended that you use the DSN detection system, which
        will check the environment variable "SENTRY_DSN", the Java
        System Property "sentry.dsn", or the "sentry.properties" file
        in your classpath. This makes it easier to provide and adjust
        your DSN without needing to change your code. See the configuration
        page for more information.
        */
        Sentry.init("https://8219291bc5224fa8ab7188ffbf4aa025:6ce60ab509d046cfbbada4862cbd2154@sentry.io/1361356");

        // You can also manually provide the DSN to the ``init`` method.
        // String dsn = "https://<SENTRY_PUBLIC_KEY>:<SENTRY_PRIVATE_KEY>@sentry.io/<PROJECT_ID>";
        // Sentry.init(dsn);

        /*
        It is possible to go around the static ``Sentry`` API, which means
        you are responsible for making the SentryClient instance available
        to your code.
        */
        sentry = SentryClientFactory.sentryClient();

        MyClass myClass = new MyClass();
        myClass.logWithStaticAPI();
    }

    /**
     * An example method that throws an exception.
     */
    void unsafeMethod() {
        throw new UnsupportedOperationException("You shouldn‘t call this!");
    }

    /**
     * Examples using the (recommended) static API.
     */
    void logWithStaticAPI() {
        // Note that all fields set on the context are optional. Context data is copied onto
        // all future events in the current context (until the context is cleared).

        // Record a breadcrumb in the current context. By default the last 100 breadcrumbs are kept.
        Sentry.getContext().recordBreadcrumb(
                new BreadcrumbBuilder().setMessage("User made an action").build()
        );

        // Set the user in the current context.
        Sentry.getContext().setUser(
                new UserBuilder().setEmail("1416459094@qq.com").build()
        );

        // Add extra data to future events in this context.
        Sentry.getContext().addExtra("extra", "thing");

        // Add an additional tag to future events in this context.
        Sentry.getContext().addTag("tagName", "tagValue");

        /*
        This sends a simple event to Sentry using the statically stored instance
        that was created in the ``main`` method.
        */
        Sentry.capture("This is a test by weichangjin");

        try {
            unsafeMethod();
        } catch (Exception e) {
            // This sends an exception event to Sentry using the statically stored instance
            // that was created in the ``main`` method.
            Sentry.capture(e);
        }
    }

}

 

自测成功!

 

项目集成sentry

标签:ext   分享图片   efault   根据   set   环境   basic   maven   height   

原文地址:https://www.cnblogs.com/promonkeys/p/10209642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!