package com.xzx.gc.common.utils;
|
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.util.CharsetUtil;
|
import com.xzx.gc.common.constant.Constants;
|
import lombok.experimental.UtilityClass;
|
import lombok.extern.slf4j.Slf4j;
|
import org.slf4j.MDC;
|
|
import java.io.File;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@UtilityClass
|
@Slf4j
|
public class LogUtils {
|
|
|
/**
|
* trace id
|
*/
|
public static final String TRACE_USER_ID = "USER_ID";
|
public static final String TRACE_ORDER_ID = "ORDER_ID";
|
|
|
/**
|
* 写入攻击型IP
|
* @param ip ip
|
* @param reason 原因
|
* @throws IOException
|
*/
|
public boolean writeIp(String ip,String reason) {
|
String urlPrefix=Constants.IMG_UPLOAD_PATH;
|
urlPrefix=urlPrefix+"/ip.txt";
|
List<String> list=new ArrayList<>();
|
boolean exist = FileUtil.exist(urlPrefix);
|
if(!exist){
|
try {
|
new File(urlPrefix).createNewFile();
|
log.info("***************初始化记录攻击IP日志文件成功路径:{}*************",urlPrefix);
|
list.add("IP地址 时间 原因");
|
//日志头
|
FileUtil.writeLines(list,urlPrefix,CharsetUtil.CHARSET_UTF_8);
|
} catch (IOException e) {
|
log.error("记录IP日志文件创建失败",e);
|
return false;
|
}
|
}
|
|
list.clear();
|
list.add(""+ip+" "+DateUtil.now() +" "+reason+"");
|
FileUtil.appendUtf8Lines(list,urlPrefix);
|
log.info("记录攻击IP:{}成功,原因:{}",ip,reason);
|
return true;
|
}
|
|
|
/**
|
* 设置 traceId
|
* @param traceId traceId
|
*/
|
public void setTraceId( String traceId, String value) {
|
MDC.put(traceId, value);
|
}
|
|
/**
|
* 移除 traceId
|
*/
|
public void removeTraceId( String traceId) {
|
MDC.remove(traceId);
|
}
|
|
/**
|
* 获取批次号
|
* @return 批次号
|
*/
|
public String getTraceId(String traceId) {
|
return MDC.get(traceId);
|
}
|
|
public void clearTraceId(){
|
MDC.clear();
|
}
|
|
}
|