1、sentry
Sentry一个开源错误跟踪工具,能够让开发者实时监控和修复崩溃程序,持续迭代,提高效率。程序代码中集成Sentry之后,能够将异常信息发送到Sentry服务,并且可以通过配置Sentry插件,能够实现通过邮件、钉钉等告警通知。
Sentry官网:https://sentry.io/welcome/
2、log4j/logback on sentry
Sentry中提供log4j的Appender,可以将log中特定等级日志发送到Sentry中
-
代码中集成Sentry 使用Maven: <dependency> <groupId>io.sentry</groupId> <artifactId>sentry-logback</artifactId> <version>1.7.5</version> </dependency>
使用SBT: libraryDependencies += "io.sentry" % "sentry-logback" % "1.7.5"
-
logback.xml的配置
<configuration> <!-- Configure the Console appender --> <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender>
<!-- Configure the Sentry appender, overriding the logging threshold to the WARN level --> <appender name="Sentry" class="io.sentry.logback.SentryAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>WARN</level> </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> </configuration>
3、配置Sentry的DSN(Data Source Name)
有以下集中实现的方式。
- 配置在classpath下的sentry.properties dsn=https://public:private@host:port/1
- 配置在Java系统属性中(Java System Properties) java -Dsentry.dsn=https://public:private@host:port/1 -jar app.jar
- 配置在系统环境变量中 SENTRY_DSN=https://public:private@host:port/1 java -jar app.jar
- 在代码中实现 import io.sentry.Sentry; Sentry.init("https://public:private@host:port/1");
我采用的是第二个方式,配置启动程序的JVM参数
4、代码实现
具体工程代码可以参考 https://github.com/chocolateBlack/loghub-logback-sentry