刘凯雄 096d50dcd3 重新定位版本号,并为mongo重新添加监控埋点 | 2 years ago | |
---|---|---|
.. | ||
src | 2 years ago | |
README.md | 4 years ago | |
pom.xml | 2 years ago |
在resource目录下创建文件夹META-INF
然后创建一个app.properties
文件里面定义app.name=cat-demo
,后面是应用的名称如果是SpringBoot可以在yml配置中加入
app.name: 项目名 # 针对CAT各个环境的项目名标识
<dependency>
<groupId>com.elab.log</groupId>
<artifactId>elab-log</artifactId>
<version>1.0</version>
</dependency>
2.1 spring配置
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<!-- 定义一个bean -->
<bean id="catAspect" class="com.elab.log.asepct.CatAspect">
</bean>
<!-- 加载一个切入点 -->
<aop:config>
<aop:aspect id="myAspect" ref="myInterceptor">
<aop:pointcut id="catPoint" expression="execution(* com.elab.cat.catdemo.service..*(..))" />
<aop:around pointcut-ref="catPoint" method="aroundMethod" />
</aop:aspect>
</aop:config>
2.1 加载配置[configuration] AOP配置 : Dao层 : CatDaoAscept Service层 : CatAspect
应用中加入:
import com.elab.log.asepct.CatDaoAscept;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
/**
* dao层AOP拦截器定义
*
* @author Liuhx
* @create 2018-06-14 11:28
* @email liuhx@elab-plus.com
**/
@Aspect
@EnableAspectJAutoProxy
@Configuration
public class DaoAspectBean {
@Bean
public CatDaoAscept getDaoAspect() {
CatDaoAscept daoAspect = new CatDaoAscept();
return daoAspect;
}
@Around(value = "execution(* com.elab.marketing.auth.dao..*(..))")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
return getDaoAspect().around(pjp);
}
}
2.2 log4j配置
log4j.rootLogger=info, Console ,cat
## 控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
## 这个配置很重要,集成了CAT的日志
log4j.appender.cat=com.elab.log.log4j.CatExtLog
log4j.appender.cat.Threshold = INFO
log4j.appender.cat.layout=org.apache.log4j.PatternLayout
log4j.appender.cat.layout.ConversionPattern=%p: [%d{yy/MM/dd HH:mm:ss}][%C-%M] -%m%n
## sql语句
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
## 包下面的类的打印级别
log4j.logger.org=ERROR
log4j.logger.org.springframework=ERROR
log4j.logger.com.x.jdbc=DEBUG
2.3 logback配置
<appender name="cat" class="com.elab.log.log4j.CatLogbackLog"></appender>
<root level="INFO">
<appender-ref ref="cat"/>
</root>
protected final Log logger = LogFactory.getLog(this.getClass());
// 下面两种日志会输出到Event模块下 // 打印info日志 logger.info("xxx"); // 打印debug日志 logger.info("ggg"); // 打印错误日志 => 错误日志会出现在Problem logger.error("lll");
## 远程消息串联
一旦出现跨进程、异步调用,则会丢失该部分消息。如何将他们进行串联起来?
```java
// 1. 异步线程之前,在主线程构建一个上下文消息对象,然后将该消息对象传递到异步线程或者其他进程中去
Map<String, String> msgContextMap = CatCrossProcess.getMsgContextMap();
// 2. 异步线程接受该消息
Map<String, String> dataMap = request.getDataMap();
Transaction t = CatCrossProcess.buildCrossMsg("privateQueue", dmlRequest.getTable(), dataMap);
try {
// 业务逻辑执行...
t.setSuccessStatus();
} catch (Exception e) {
t.setStatus(e);
logger.error("消息队列发送失败");
} finally {
t.complete();
}
logger.info
打印出来