
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