刘凯雄 096d50dcd3 重新定位版本号,并为mongo重新添加监控埋点 2 years ago
..
src 096d50dcd3 重新定位版本号,并为mongo重新添加监控埋点 2 years ago
README.md ece44f09da 准备构建15版本 4 years ago
pom.xml 096d50dcd3 重新定位版本号,并为mongo重新添加监控埋点 2 years ago

README.md

CAT日志使用介绍

cat-github

配置环境

  1. 加载CAT配置 在resource目录下创建文件夹META-INF 然后创建一个app.properties文件里面定义app.name=cat-demo,后面是应用的名称

如果是SpringBoot可以在yml配置中加入

app.name: 项目名 # 针对CAT各个环境的项目名标识
  1. 加载配置 [xml]
<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>
  1. 应用中植入CAT日志 ```java // 建议在方法上加入 controller、service //username 为作者名称 @ExceptionHandle(username = "liukx",ModuleName=TestServiceImpl.class)

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();
}


  1. 需要注意
    1. 应用中需要根据自己的需求将对应的logger.info打印出来
    2. 如何查看对应的CAT在当前的哪个环境下?
      1. 到你当前项目的文件夹的根目录下,比如我:E:\data\appdatas\cat\client.xml
      2. 里面有对应的路径地址,表明当前项目的日志会上传到这个对应的CAT下面
    3. 如何查看对应的错误?
      1. 登录CAT的web查询页面
      2. 选择对应的项目
      3. 点击Problem页面查看