开篇
现在应用都需要对日志进行监控或者报警,现在普遍的做法是采用EKL收集日志,然后再由Grafana进行内容展示和及告警策略等,那如果项目架构比较简单(单体应用),又不想搞那么多中间件依赖怎么办,这里有一种简单的方式可以实现~
继承UnsynchronizedAppenderBase
Springboot默认集成的是logback,所以自定义Appender
非常简单,继承一下AppenderBase
类即可。
再来看看AppenderBase
之上的Appender
下都有哪些实现
UnsynchronizedAppenderBase
。从名字就能看出来是异步的、普通的、不加锁的。 它类似于AppenderBase
,只是派生的Appender
实现类需要自己处理线程同步。
演示
定义一个SendErrorMsgAppender
这个类要继承UnsynchronizedAppenderBase
,并实现其中的抽象方法,不需要手动让它线程同步,异步就好,这样可以避免出错了导致业务操作回滚。
/**
* UnsynchronizedAppenderBase 用于异步处理,不阻塞主线程, 拦截error日志,并发送到钉钉群
*/
@Gette