package com.yanzuoguang.log; import com.yanzuoguang.util.exception.ExceptionHelper; import com.yanzuoguang.util.helper.DateHelper; import com.yanzuoguang.util.helper.StringHelper; import com.yanzuoguang.util.log.Log; import com.yanzuoguang.util.vo.CloudConfig; import org.springframework.stereotype.Component; import java.util.Date; /** * 写入日志 * * @author 颜佐光 */ @Component public class AspectLogStart { private final CloudConfig cloudConfig; private final LogLocal logLocal; private final LogString logString; public AspectLogStart(CloudConfig cloudConfig, LogLocal logLocal, LogString logString) { this.cloudConfig = cloudConfig; this.logLocal = logLocal; this.logString = logString; } /** * 获取是否清空日志的标签 * * @return 返回日志是否清空 */ public boolean requestLogInit() { boolean clear = Log.threadCurrent() == null; if (clear) { Log.threadBegin(); } return clear; } /** * 记录请求日志 * * @param tag 标记 * @param url 地址 * @param requestBody 请求内容 * @param logFlag 是否记录日志 */ public LogInfoVo requestLog(Class<?> cls, String tag, String url, Object requestBody, boolean logFlag) { String body; try { body = logString.getBodyString(requestBody); } catch (Exception ex) { ExceptionHelper.PrintError(AspectLogStart.class, ex); body = StringHelper.EMPTY; } // 声明日志对象 LogInfoVo log = new LogInfoVo(); log.setLogId(StringHelper.getNewID()); log.setCreateDate(DateHelper.getDateTimeString(new Date())); // 写入其他对象 log.setApplicationName(this.cloudConfig.getApplicationName()); log.setTag(tag); log.setUrl(url); log.setContent(body); log.setLogFlag(logFlag); // 开始记录到日志对象中,用于监测系统执行情况,超时时,则直接打印出日志 this.logLocal.startLog(log); // 输出日志 if (log.isLogFlag() && this.cloudConfig.isLogCommon()) { Log.info(cls, " %s [ %s ] request: %s", tag, url, body); } return log; } }