All Downloads are FREE. Search and download functionalities are using the official Maven repository.

top.doudou.common.aop.log.collector.PrintCollector Maven / Gradle / Ivy

package top.doudou.common.aop.log.collector;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import top.doudou.common.aop.log.AopLogProperties;
import top.doudou.common.aop.log.LogData;
import top.doudou.core.util.file.WriteLogToFile;
import top.doudou.core.util.time.DateTimeUtil;

import java.io.File;
import java.util.Date;
import java.util.Map;

/**
 * @Description 日志打印的收集器
 * @author 傻男人<[email protected]>
 * @Date 2020-09-25 14:53
 * @Version V1.0
 */
@Component
public class PrintCollector implements LogCollector {

    private int count = 1 ;
    private int lineSize = 200 ;

    private static final String aopName = "aop.log";

    @Autowired
    private AopLogProperties aopLogProperties;

    @Override
    public void collect(LogData data) {
        StringBuilder stringBuilder = new StringBuilder("--->   ");
        String reqCode = data.getReqCode();
        if(StringUtils.isNotEmpty(reqCode)){
            stringBuilder.append("【"+reqCode+"】 ");
        }
        Date logDate = data.getLogDate();
        if(null != logDate){
            addLogInfo(stringBuilder,DateUtil.date(logDate).toString());
        }
        String method = data.getHttpMethod();
        if(StringUtils.isNotEmpty(method)){
            addLogInfo(stringBuilder,"   "+method);
        }
        String type = data.getType();
        if(StringUtils.isNotEmpty(type)){
            addLogInfo(stringBuilder,"   "+type);
        }
        String interfaceName = data.getInterfaceName();
        if(StringUtils.isNotEmpty(interfaceName)){
            addLogInfo(stringBuilder,"   "+interfaceName);
        }
        String reqUrl = data.getReqUrl();
        if(StringUtils.isNotEmpty(type)){
            addLogInfo(stringBuilder,"   url:"+reqUrl);
        }
        long costTime = data.getCostTime();
        addLogInfo(stringBuilder,"   cost:"+costTime+"ms");
        boolean success = data.isSuccess();
        addLogInfo(stringBuilder,"   hasSuccess:"+success);
        String args = data.getArgs();
        String clientIp = data.getClientIp();
        if(StringUtils.isNotEmpty(clientIp)){
            addLogInfo(stringBuilder,"   clientIp:"+clientIp);
        }
        String userAgent = data.getUserAgent();
        if(StringUtils.isNotEmpty(userAgent)){
            addLogInfo(stringBuilder,"  userAgent:"+userAgent);
        }
        String reqSource = data.getReqSource();
        if(StringUtils.isNotEmpty(reqSource)){
            addLogInfo(stringBuilder,"   reqSource:"+reqSource);
        }
        Map headers = data.getHeaders();
        if(null != headers && headers.size() > 0 ){
            addLogInfo(stringBuilder,"   header:"+headers);
        }
        String threadName = data.getThreadName();
        if(StringUtils.isNotEmpty(threadName)){
            addLogInfo(stringBuilder,"   threadName:"+threadName);
        }
        if(StringUtils.isNotEmpty(args)){
            addLogInfo(stringBuilder,(StringUtils.isNotEmpty(reqCode)?"【"+reqCode+"】 ":"")+ "parameter:"+args);
        }
        Object respond = data.getRespond();
        if(null != respond){
            addLogInfo(stringBuilder,(StringUtils.isNotEmpty(reqCode)?"【"+reqCode+"】 ":"")+ "respond:"+respond);
        }
        String content = data.getContent();
        if(StringUtils.isNotEmpty(content)){
            addLogInfo(stringBuilder,(StringUtils.isNotEmpty(reqCode)?"【"+reqCode+"】 ":"")+ "content:"+content);
        }
        stringBuilder.append("\n");
        System.out.println(stringBuilder.toString());
        WriteLogToFile.asyncLogToFile(getFileName(),stringBuilder.toString(),false);
    }

    public void addLogInfo(StringBuilder stringBuilder,String msg){
        if(msg.contains(" respond:") || msg.contains(" parameter:") || msg.contains(" content:")){
            stringBuilder.append("\n--->");
            stringBuilder.append("   "+msg);
            return;
        }
//        if(stringBuilder.length()> (lineSize * count)){
//            stringBuilder.append("\n--->");
//            count++;
//        }
        stringBuilder.append(msg);
    }

    private String getFileName(){
        File file = new File(aopLogProperties.getFilePath(aopLogProperties.getAopLog()));
        String newFilePath = file.getParent()+ File.separator+ DateTimeUtil.getThisDateTime() +"_"+file.getName();
        File newFile = new File(newFilePath);
        if(!newFile.exists()){
            FileUtil.touch(newFilePath);
        }
        return newFilePath;
    }


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy