# 日志异常消息通知的spring-boot-start框架:logpolice-spring-boot-starter
## 注意:
此版本为<动态加载>报警配置版本,若不需要,可切换master分支,支持application.properties
## 背景:
对于项目工程来说,bug是不可能避免的。生产环境并不能像本地环境一样方便调试,无法第一时间知道线上事故。所以我们就需要项目的异常通知功能,在用户发现bug之前,开发者自可以提前发现问题点,避免不必要的线线上事故。
如果捕获项目全局异常,部分异常不是我们想关注的,这时候可以考虑基于日志的log.error()主动触发异常提示开发者,并精确获取异常堆栈信息,在获取异常消息推送的避免消息轰炸,可以根据自定义配置决定日志推送策略。
本项目基于以上需求并 结合DDD领域开发设计而成,简单接入消息报功能
## 功能
1. 监听log.error(),异步推送堆栈信息,快速接入
2. 提供推送策略,避免消息轰炸(超频/超时)
3. 提供本地,redis 数据存储,按需配置(默认本地)
4. 提供钉钉,邮件 推送类型,按需配置(默认钉钉)
5. 提供异常过滤白名单
6. 此版本提供报警属性动态配置
## 系统需求
![jdk版本](https://img.shields.io/badge/java-1.8%2B-red.svg?style=for-the-badge&logo=appveyor)
![maven版本](https://img.shields.io/badge/maven-3.2.5%2B-red.svg?style=for-the-badge&logo=appveyor)
![spring boot](https://img.shields.io/badge/spring%20boot-2.0.3.RELEASE%2B-red.svg?style=for-the-badge&logo=appveyor)
## 当前版本
![目前工程版本](https://img.shields.io/badge/version-1.0.0%20acm%2B-red.svg?style=for-the-badge&logo=appveyor)
## 快速接入(默认本地缓存&钉钉推送)
(默认钉钉推送,本地缓存。有需求可以更改配置,邮箱或redis异常存储)
1. 工程``mvn clean install``打包本地仓库。
2. 在引用工程中的``pom.xml``中做如下依赖
```
<dependency>
<groupId>com.logpolice</groupId>
<artifactId>logpolice-spring-boot-starter</artifactId>
<version>1.2.2-hot</version>
</dependency>
```
3. 项目新增类文件,实现LogpoliceProperties, LogpoliceDingDingProperties:
```
@Component
public class LogpoliceAcmProperties implements LogpoliceProperties, LogpoliceDingDingProperties {
@Override
public String getAppCode() {
return "工程名";
}
@Override
public String getLocalIp() {
return "工程地址";
}
@Override
public Boolean getEnabled() {
return true;
}
@Override
public Long getTimeInterval() {
return 60 * 5;
}
@Override
public Boolean getEnableRedisStorage() {
return true;
}
@Override
public NoticeSendEnum getNoticeSendType() {
return NoticeSendEnum.DING_DING;
}
@Override
public Set<String> getExceptionWhiteList() {
return new HashSet<>();
}
@Override
public Set<String> getClassWhiteList() {
return new HashSet<>();
}
}
```
4. 钉钉配置:[钉钉机器人](https://open-doc.dingtalk.com/microapp/serverapi2/krgddi "自定义机器人")
5. 以上配置好以后就可以写demo测试啦,首先创建logback.xml
```
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder 默认配置为PatternLayoutEncoder -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="LogDingDingAppender" class="com.logpolice.port.LogSendAppender"/>
<root level="ERROR">
<appender-ref ref="LogDingDingAppender"/>
</root>
</configuration>
```
注:如果已有logback.xml,引用LogSendAppender类即可
```
<appender name="LogDingDingAppender" class="com.logpolice.port.LogSendAppender"/>
<root level="ERROR">
<appender-ref ref="LogDingDingAppender"/>
</root>
```
6. 然后编写测试类,需要主动打印exception堆栈信息,否则日志获取不到:
```
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
public class DemoApplicationTest1s {
private Logger log = LoggerFactory.getLogger(DemoApplicationTest1s.class);
@Test
public void test1() {
try {
int i = 1 / 0;
} catch (Exception e) {
log.error("哈哈哈哈,param:{}, error:{}", 1, e);
}
}
}
```
log.error()写入异常,推送效果(钉钉/邮箱)
![效果](/src/main/resources/wx_20190916162148.png)
![效果](/src/main/resources/wx_20190916162204.png)
![效果](/src/main/resources/wx_20190916194724.png)
log.error()未写入异常,推送效果(钉钉/邮箱)
![效果](/src/main/resources/wx_20190916163218.png)
![效果](/src/main/resources/wx_20190916194628.png)
## 全部配置
1. 通用配置(*必填), 需实现:LogpoliceProperties接口
```
* 1. 工程名
* 2. 工程地址
3. 日志报警开关 (默认:关闭)
4. 日志报警清除时间 (默认:21600秒 = 6小時)
5. 通知频率类型:超时/超频 (默认:超时)
6. 超时间隔时间 (默认:300秒 = 5分钟)
7. 超频间隔次数 (默认:10次)
8. 消息推送类型:钉钉/邮件 (默认:钉钉)
9. redis配置开关 (默认:关闭)
10. redis缓存key (默认:logpolice_exception_statistic:)
11. 异常白名单 (默认:无)
12. 类文件白名单 (默认:无)
13. 日志模板(默认:无)
```
2. 钉钉配置(若接入,*必填), 需实现:LogpoliceDingDingProperties接口
```
* 钉钉webhook
被@人的手机号(默认:无)
此消息类型为固定text(默认:text)
所有人@时:true,否则为false(默认:false)
```
3. 邮箱配置(若接入,*必填), 需实现:LogpoliceMailProperties接口
```
#报警配置,接口实现
* 发件人 (应配置spring邮箱配置一致)
* 收件人
抄送 (默认:无)
密抄送 (默认:无)
#application.properties spring邮箱配置
* spring.mail.host=smtp.qq.com
* spring.mail.username=发送者@qq.com
* spring.mail.password=xxxxxxxx
* spring.mail.default-encoding=UTF-8
* spring.mail.properties.mail.smtp.ssl.enable=true
* spring.mail.properties.mail.imap.ssl.socketFactory.fallback=false
* spring.mail.properties.mail.smtp.ssl.socketFactory.class=com.fintech.modules.base.util.mail.MailSSLSocketFactory
* spring.mail.properties.mail.smtp.auth=true
* spring.mail.properties.mail.smtp.starttls.enable=true
* spring.mail.properties.mail.smtp.starttls.required=true
```
4. 飞书配置(若接入,*必填), 需实现:LogpoliceFeiShuProperties接口
```
* 飞书webhook
```
## 常用配置
1. 推送类型(钉钉/邮件,默认钉钉)
```
@Override
public NoticeSendEnum getNoticeSendType() {
return NoticeSendEnum.DING_DING;
}
```
2. 推送策略(超时时间/超频次数,默认超时)
```
@Override
public NoticeFrequencyType getFrequencyType() {
return NoticeFrequencyType.SHOW_COUNT;
}
@Override
public Long getTimeInterval() {
return 30;
}
```
```
@Override
public NoticeFrequencyType getFrequencyType() {
return NoticeFrequencyType.TIMEOUT;
}
@Override
public Long getShowCount() {
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于java开发的日志报警处理+源码+项目文档+使用说明,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用! 项目简介: 对于项目工程来说,bug是不可能避免的。生产环境并不能像本地环境一样方便调试,无法第一时间知道线上事故。所以我们就需要项目的异常通知功能,在用户发现bug之前,开发者自可以提前发现问题点,避免不必要的线线上事故。 如果捕获项目全局异常,部分异常不是我们想关注的,这时候可以考虑基于日志的log.error()主动触发异常提示开发者,并精确获取异常堆栈信息,在获取异常消息推送的避免消息轰炸,可以根据自定义配置决定日志推送策略。 本项目基于以上需求并 结合DDD领域开发设计而成,简单接入消息报功能 功能 监听log.error(),异步推送堆栈信息,快速接入 提供推送策略,避免消息轰炸(超频/超时) 提供本地,redis 数据存储,按需配置(默认本地) 提供钉钉,邮件 推送类型,按需配置(默认钉钉) 提供异常过滤白名单 此版本提供报警属性动态配置
资源推荐
资源详情
资源评论
收起资源包目录
日志报警处理.zip (58个子文件)
日志报警处理
logpolice-spring-boot-starter-master
pom.xml 3KB
src
main
resources
wx_20190916194628.png 15KB
wx_20190916163218.png 18KB
wx_20190916194724.png 49KB
wx_20190916162148.png 23KB
META-INF
spring.factories 704B
wx_20190916162204.png 19KB
java
com
logpolice
application
NoticeService.java 4KB
NoticeServiceFactory.java 3KB
infrastructure
utils
RedisFactory.java 921B
LogpoliceExecutorFactory.java 2KB
redis
JedisUtils.java 3KB
RedisTemplateUtils.java 2KB
HttpUtils.java 5KB
DateUtils.java 1KB
LockUtils.java 512B
ApplicationContextProvider.java 753B
rpc
FeiShuNoticeRpc.java 2KB
ExceptionStatisticLocalCache.java 2KB
LockUtilsLocalCache.java 1KB
DingDingNoticeRpc.java 2KB
MailNoticeClient.java 4KB
ExceptionStatisticRedis.java 2KB
LockUtilsRedis.java 835B
enums
NoticeSendEnum.java 271B
RedisClientTypeEnum.java 250B
NoticeDbTypeEnum.java 727B
ExecutorFactoryEnum.java 412B
exception
DingDingTokeNotExistException.java 319B
EmailFormatException.java 299B
FeiShuTokeNotExistException.java 315B
RepositoryNotExistException.java 310B
dto
DingDingTextCommand.java 320B
DingDingCommand.java 1KB
DingDingAtCommand.java 454B
FeiShuCommand.java 371B
properties
LogpoliceFeiShuProperties.java 235B
LogpoliceProperties.java 2KB
LogpoliceMailProperties.java 544B
LogpoliceConstant.java 1KB
LogpoliceDingDingProperties.java 734B
config
LogpoliceServiceAutoConfiguration.java 2KB
LogpoliceMailAutoConfiguration.java 2KB
LogpoliceRedisAutoConfiguration.java 1KB
LogpoliceFeiShuAutoConfiguration.java 1KB
LogpoliceAutoConfiguration.java 731B
LogpoliceLoclCacheAutoConfiguration.java 955B
LogpoliceJedisAutoConfiguration.java 1KB
LogpoliceRedisTemplateAutoConfiguration.java 1KB
LogpoliceDingDingAutoConfiguration.java 1KB
port
LogSendAppender.java 3KB
domain
repository
ExceptionNoticeRepository.java 509B
ExceptionStatisticRepository.java 834B
entity
NoticeFrequencyType.java 1KB
ExceptionStatistic.java 2KB
ExceptionNotice.java 10KB
.gitignore 340B
README.md 10KB
共 58 条
- 1
资源评论
梦回阑珊
- 粉丝: 5192
- 资源: 1681
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功