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