Spring Boot整合 Sentry 监控项目日志

作者: lxchinesszz  

来源:SpringForAll社区


Sentry Java版使用简介


基本概念


  • Sentry是什么?


Sentry 是一个开源的实时错误报告工具,支持 web 前后端、移动应用以及游戏,支持 Python、OC、Java、Go、Node、Django、RoR 等主流编程语言和框架 ,还提供了 GitHub、Slack、Trello 等常见开发工具的集成。


  • DSN(Data Source Name)


Sentry 服务支持多用户、多团队、多应用管理,每个应用都对应一个 PROJECTID,以及用于身份认证的 PUBLICKEY 和 SECRET_KEY。由此组成一个这样的 DSN:

'{PROTOCOL}://{PUBLICKEY}:{SECRETKEY}@{HOST}/{PATH}{PROJECT_ID}'


PROTOCOL 通常会是 http 或者 https,HOST 为 Sentry 服务的主机名和端口,PATH 通常为空。 为方便管理,每个应用生成一个 DSN。


使用 Sentry SDK


Sentry 的 SDK 通常在各语言的包管理器中成为 Raven,使用起来也非常简单。以 Java版本为例(使用SpringBoot框架):


1.首先项目中pom文件安装 Raven

 
   
  1.    

  2.    

  3.       com.getsentry.raven

  4.       raven-logback

  5.       8.0.2

  6.  

2.在项目配置文件中建立logback.xml

 
   
  1.    

  2.    

  3.     conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>

  4.     conversionWord="wex"

  5.                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>

  6.     conversionWord="wEx"

  7.                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>

  8.    

  9.     name="CONSOLE_LOG_PATTERN"

  10.              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(--){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>/>

  11.     name="Console" class="ch.qos.logback.core.ConsoleAppender">

  12.        

  13.            

  14.            ${CONSOLE_LOG_PATTERN}

  15.        

  16.    

  17.     name="Sentry" class="com.getsentry.raven.logback.SentryAppender">

  18.        

  19.        http://d73b23c481654b9ca0e4e8a9db310169:[email protected]/7

  20.        

  21.         class="ch.qos.logback.classic.filter.ThresholdFilter">

  22.            WARN

  23.        

  24.    

  25.     name="logback.SentryAppenderIT" level="INFO">

  26.         ref="Sentry"/>

  27.    

  28.     level="INFO">

  29.         ref="Console"/>

  30.         ref="Sentry"/>

  31.    


3.application.propertes中添加导入日志配置【主要要提前在pom文件中添加包含*.xml,否则会报错,not found file】

logging.config=classpath:logback.xml

4.接口层,正常使用logger等方法。Raven会自动把warn级别通过tcp发送到日志中心,并通知相关人员查看信息

 
   
  1.   @RequestMapping(value = "/testlog", method = RequestMethod.GET)

  2.    public void testLog() {

  3.        logger.info("test接口");//最低拦截级别为warn,所以info不会输出发送到日志中心

  4.        logger.error("error"); //会显示在日志中心,并邮件通知相关联系人

  5.    }

这样就可以使用 Raven 对象向 Sentry 服务器中提交日志信息了。

使用 Sentry web 服务

主要是登录后台查看,后续有时间更新此部分文档。开通账号可找虎大师。

附录

sentry 官方文档

 
   
  1. "1.0" encoding="UTF-8" ?>

  2. scan="true" scanPeriod="30 seconds">

  3.    

  4.    test

  5.    

  6.     name="Log_Home" value="mylogs/test"/>

  7.    

  8.     name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

  9.        

  10.            

  11.            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n

  12.        

  13.    

  14.    

  15.     name="FILE_DEBUG" class="ch.qos.logback.core.rolling.RollingFileAppender">

  16.        

  17.         class="ch.qos.logback.classic.filter.LevelFilter">

  18.            

  19.            DEBUG

  20.            

  21.            ACCEPT

  22.            

  23.            DENY

  24.        

  25.        UTF-8

  26.        ${Log_Home}/debug/debug.log

  27.        

  28.         class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

  29.            

  30.                ${Log_Home}/debug/debug.%d{yyyy-MM-dd}.%i.log

  31.            

  32.            

  33.            1

  34.             class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

  35.                

  36.                2MB

  37.            

  38.        

  39.        

  40.            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n

  41.        

  42.    

  43.    

  44.     name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">

  45.        

  46.         class="ch.qos.logback.classic.filter.LevelFilter">

  47.            

  48.            INFO

  49.            

  50.            ACCEPT

  51.            

  52.            DENY

  53.        

  54.        UTF-8

  55.        ${Log_Home}/info/info.log

  56.        

  57.         class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

  58.            

  59.                ${Log_Home}/info/info.%d{yyyy-MM-dd}.%i.log

  60.            

  61.            

  62.            1

  63.             class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

  64.                

  65.                2MB

  66.            

  67.        

  68.        

  69.            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n

  70.        

  71.    

  72.    

  73.     name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">

  74.        

  75.         class="ch.qos.logback.classic.filter.LevelFilter">

  76.            

  77.            WARN

  78.            

  79.            ACCEPT

  80.            

  81.            DENY

  82.        

  83.        UTF-8

  84.        ${Log_Home}/warn/warn.log

  85.        

  86.         class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

  87.            

  88.                ${Log_Home}/warn/warn.%d{yyyy-MM-dd}.%i.log

  89.            

  90.            

  91.            1

  92.             class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

  93.                

  94.                2MB

  95.            

  96.        

  97.        

  98.            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n

  99.        

  100.    

  101.    

  102.     name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">

  103.        

  104.         class="ch.qos.logback.classic.filter.LevelFilter">

  105.            

  106.            ERROR

  107.            

  108.            ACCEPT

  109.            

  110.            DENY

  111.        

  112.        UTF-8

  113.        ${Log_Home}/error/error.log

  114.        

  115.         class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

  116.            

  117.                ${Log_Home}/error/error.%d{yyyy-MM-dd}.%i.log

  118.            

  119.            

  120.            1

  121.             class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">

  122.                

  123.                2MB

  124.            

  125.        

  126.        

  127.            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} - %msg%n

  128.        

  129.    

  130.    

  131.     name="rattlesnake.callback"/>

  132.    

  133.    

  134.     level="DEBUG">

  135.         ref="STDOUT"/>

  136.         ref="FILE_DEBUG"/>

  137.         ref="FILE_INFO"/>

  138.         ref="FILE_WARN"/>

  139.         ref="FILE_ERROR"/>

  140.    

-END-

 近期热文:

  • 重磅:Elasticsearch上市!市值近50亿美元

  • 利用SPRING管理热加载的GROOVY对象!

  • Spring Boot中如何扩展XML请求和响应的支持

  • Java 11正式发布,新特性解读

  • 系统优化总结—系统层面

  • NIO相关基础篇

  • 以Dubbo为例,聊聊如何为开源项目做贡献

  • 25个面试中最常问的问题和答案

关注我

Spring Boot整合 Sentry 监控项目日志_第1张图片

点击“阅读原文”,看本号其他精彩内容

你可能感兴趣的:(Spring Boot整合 Sentry 监控项目日志)