rev:代码整体修改
This commit is contained in:
@@ -242,6 +242,12 @@
|
|||||||
<artifactId>spring-boot-starter-data-redis</artifactId>
|
<artifactId>spring-boot-starter-data-redis</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.redisson</groupId>
|
||||||
|
<artifactId>redisson-spring-boot-starter</artifactId>
|
||||||
|
<version>3.16.4</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!--WQL-->
|
<!--WQL-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.hynnet</groupId>
|
<groupId>com.hynnet</groupId>
|
||||||
@@ -349,13 +355,6 @@
|
|||||||
<version>5.0.1</version>
|
<version>5.0.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!--loki-->
|
|
||||||
<!-- https://loki4j.github.io/loki-logback-appender/#quick-start -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.github.loki4j</groupId>
|
|
||||||
<artifactId>loki-logback-appender-jdk8</artifactId>
|
|
||||||
<version>1.3.2</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.httpcomponents</groupId>
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
<artifactId>httpclient</artifactId>
|
<artifactId>httpclient</artifactId>
|
||||||
|
|||||||
@@ -1,40 +0,0 @@
|
|||||||
package org.nl.modules.loki.rest;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import io.swagger.annotations.Api;
|
|
||||||
import io.swagger.annotations.ApiOperation;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.nl.modules.common.annotation.RateLimiter;
|
|
||||||
import org.nl.modules.loki.service.LokiService;
|
|
||||||
import org.springframework.http.HttpStatus;
|
|
||||||
import org.springframework.http.ResponseEntity;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author: lyd
|
|
||||||
* @Description: 日志监控
|
|
||||||
* @Date: 2022-08-15
|
|
||||||
*/
|
|
||||||
@RestController
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
@Api(tags = "日志监控")
|
|
||||||
@RequestMapping("/api/loki")
|
|
||||||
@Slf4j
|
|
||||||
public class LokiController {
|
|
||||||
|
|
||||||
private final LokiService lokiService;
|
|
||||||
|
|
||||||
@GetMapping("/labels/values")
|
|
||||||
@ApiOperation("获取标签")
|
|
||||||
public ResponseEntity<Object> labelsValues() {
|
|
||||||
return new ResponseEntity<>(lokiService.getLabelsValues(), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/logs")
|
|
||||||
@ApiOperation("获取日志")
|
|
||||||
@RateLimiter(value = 1, timeout = 300) // 限流
|
|
||||||
public ResponseEntity<Object> getLogData(@RequestBody JSONObject json) {
|
|
||||||
return new ResponseEntity<>(lokiService.getLogData(json), HttpStatus.OK);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
package org.nl.modules.loki.service;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author: lyd
|
|
||||||
* @Description: 服务类
|
|
||||||
* @Date: 2022-08-15
|
|
||||||
*/
|
|
||||||
public interface LokiService {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取日志信息
|
|
||||||
* @param json
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
JSONObject getLogData(JSONObject json);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取labels和values树
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
JSONArray getLabelsValues();
|
|
||||||
}
|
|
||||||
@@ -1,113 +0,0 @@
|
|||||||
package org.nl.modules.loki.service.impl;
|
|
||||||
|
|
||||||
import cn.hutool.core.util.CharsetUtil;
|
|
||||||
import cn.hutool.http.HttpUtil;
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
|
||||||
import org.nl.modules.loki.service.LokiService;
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author: lyd
|
|
||||||
* @Description: 实现类
|
|
||||||
* @Date: 2022-08-15
|
|
||||||
*/
|
|
||||||
@Service
|
|
||||||
@RequiredArgsConstructor
|
|
||||||
public class LokiServiceImpl implements LokiService {
|
|
||||||
|
|
||||||
@Value("${loki.url}")
|
|
||||||
private String lokiUrl;
|
|
||||||
|
|
||||||
@Value("${loki.systemName}")
|
|
||||||
private String systemName;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public JSONObject getLogData(JSONObject json) {
|
|
||||||
String logLabel = "";
|
|
||||||
String logLabelValue = "";
|
|
||||||
Long start = 0L;
|
|
||||||
Long end = 0L;
|
|
||||||
String text = "";
|
|
||||||
String limit = "100";
|
|
||||||
String direction = "backward";
|
|
||||||
if (json.get("logLabel") != null) logLabel = json.getString("logLabel");
|
|
||||||
if (json.get("logLabelValue") != null) logLabelValue = json.getString("logLabelValue");
|
|
||||||
if (json.get("text") != null) text = json.getString("text");
|
|
||||||
if (json.get("start") != null) start = json.getLong("start");
|
|
||||||
if (json.get("end") != null) end = json.getLong("end");
|
|
||||||
if (json.get("limits") != null) limit = json.getString("limits");
|
|
||||||
if (json.get("direction") != null) direction = json.getString("direction");
|
|
||||||
/**
|
|
||||||
* 组织参数
|
|
||||||
* 纳秒数
|
|
||||||
* 1660037391880000000
|
|
||||||
* 1641453208415000000
|
|
||||||
* http://localhost:3100/loki/api/v1/query_range?query={host="localhost"} |= ``&limit=1500&start=1641453208415000000&end=1660027623419419002
|
|
||||||
*/
|
|
||||||
JSONObject parse = null;
|
|
||||||
String query = lokiUrl + "/query_range?query={system=\"" + systemName + "\", " + logLabel + "=\"" + logLabelValue + "\"} |= `" + text + "`";
|
|
||||||
String result = "";
|
|
||||||
if (start==0L) {
|
|
||||||
result = HttpUtil.get(query + "&limit=" + limit + "&direction=" + direction, CharsetUtil.CHARSET_UTF_8);
|
|
||||||
} else {
|
|
||||||
result = HttpUtil.get(query + "&limit=" + limit + "&start=" + start + "&end=" + end + "&direction=" + direction, CharsetUtil.CHARSET_UTF_8);
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
parse = (JSONObject) JSONObject.parse(result);
|
|
||||||
} catch (Exception e) {
|
|
||||||
// reslut的值可能为:too many outstanding requests,无法转化成Json
|
|
||||||
System.out.println("reslut:" + result);
|
|
||||||
// e.printStackTrace();
|
|
||||||
}
|
|
||||||
return parse;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取labels和values树
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public JSONArray getLabelsValues() {
|
|
||||||
/**
|
|
||||||
* [{
|
|
||||||
* label:
|
|
||||||
* value:
|
|
||||||
* children:[{
|
|
||||||
* label
|
|
||||||
* value
|
|
||||||
* }]
|
|
||||||
* }]
|
|
||||||
*/
|
|
||||||
JSONArray result = new JSONArray();
|
|
||||||
// 获取所有标签
|
|
||||||
String labelString = HttpUtil.get(lokiUrl + "/labels", CharsetUtil.CHARSET_UTF_8);
|
|
||||||
JSONObject parse = (JSONObject) JSONObject.parse(labelString);
|
|
||||||
JSONArray labels = parse.getJSONArray("data");
|
|
||||||
for (int i=0; i<labels.size(); i++) {
|
|
||||||
// 获取标签下的所有值
|
|
||||||
String valueString = HttpUtil.get(lokiUrl + "/label/" + labels.getString(i) + "/values", CharsetUtil.CHARSET_UTF_8);
|
|
||||||
JSONObject parse2 = (JSONObject) JSONObject.parse(valueString);
|
|
||||||
JSONArray values = parse2.getJSONArray("data");
|
|
||||||
JSONArray children = new JSONArray();
|
|
||||||
// 组成树形状态 两级
|
|
||||||
for (int j=0; j<values.size(); j++) {
|
|
||||||
JSONObject leaf = new JSONObject();
|
|
||||||
leaf.put("label", values.getString(j));
|
|
||||||
leaf.put("value", values.getString(j));
|
|
||||||
children.add(leaf);
|
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject node = new JSONObject();
|
|
||||||
node.put("label", labels.getString(i));
|
|
||||||
node.put("value", labels.getString(i));
|
|
||||||
node.put("children", children);
|
|
||||||
result.add(node);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -58,6 +58,13 @@ public interface AcsToWmsService {
|
|||||||
*/
|
*/
|
||||||
JSONObject apply(JSONObject whereJson);
|
JSONObject apply(JSONObject whereJson);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 带事务
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
JSONObject transApply(JSONObject param) ;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ACS客户端--->LMS服务端
|
* ACS客户端--->LMS服务端
|
||||||
* 任务申请
|
* 任务申请
|
||||||
|
|||||||
@@ -4,12 +4,11 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
import cn.hutool.http.HttpResponse;
|
|
||||||
import com.alibaba.fastjson.JSON;
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
import org.nl.modules.common.utils.RedisUtils;
|
import org.nl.modules.common.utils.RedisUtils;
|
||||||
@@ -22,25 +21,21 @@ import org.nl.wms.basedata.service.VehicleService;
|
|||||||
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
|
import org.nl.wms.basedata.service.dto.MaterialbaseDto;
|
||||||
import org.nl.wms.basedata.service.dto.VehicleDto;
|
import org.nl.wms.basedata.service.dto.VehicleDto;
|
||||||
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
import org.nl.wms.ext.acs.service.AcsToWmsService;
|
||||||
import org.nl.wms.log.LokiLog;
|
|
||||||
import org.nl.wms.log.LokiLogType;
|
|
||||||
import org.nl.wms.pda.scanGroup.HcwNumEnum;
|
|
||||||
import org.nl.wms.pda.scanGroup.KlzhcwUtil;
|
import org.nl.wms.pda.scanGroup.KlzhcwUtil;
|
||||||
import org.nl.wms.pda.scanGroup.MyLinkedListService;
|
|
||||||
import org.nl.wms.pdm.service.DeviceService;
|
import org.nl.wms.pdm.service.DeviceService;
|
||||||
import org.nl.wms.pdm.service.WorkordeService;
|
import org.nl.wms.pdm.service.WorkordeService;
|
||||||
import org.nl.wms.pdm.service.dto.DeviceDto;
|
|
||||||
import org.nl.wms.pdm.service.dto.WorkorderDto;
|
import org.nl.wms.pdm.service.dto.WorkorderDto;
|
||||||
import org.nl.wms.sch.manage.TaskStatusEnum;
|
import org.nl.wms.sch.manage.TaskStatusEnum;
|
||||||
import org.nl.wms.sch.service.TaskService;
|
import org.nl.wms.sch.service.TaskService;
|
||||||
import org.nl.wms.sch.tasks.RegionTypeEnum;
|
|
||||||
import org.nl.wms.sch.tasks.callEmpty.HnjCallEmpVehicleTask;
|
import org.nl.wms.sch.tasks.callEmpty.HnjCallEmpVehicleTask;
|
||||||
import org.nl.wms.sch.tasks.sendEmpty.KzdjwSendEmpVehicleTask;
|
|
||||||
import org.nl.wms.sch.tasks.callMaterial.YljCallMaterialTask;
|
import org.nl.wms.sch.tasks.callMaterial.YljCallMaterialTask;
|
||||||
|
import org.nl.wms.sch.tasks.sendEmpty.KzdjwSendEmpVehicleTask;
|
||||||
import org.nl.wms.sch.tasks.sendMaterial.HnjSendMaterialTask;
|
import org.nl.wms.sch.tasks.sendMaterial.HnjSendMaterialTask;
|
||||||
import org.nl.wms.st.structivt.service.StructivtService;
|
import org.nl.wms.st.structivt.service.StructivtService;
|
||||||
import org.nl.wms.st.structivt.service.dto.StructivtDto;
|
import org.nl.wms.st.structivt.service.dto.StructivtDto;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.redisson.api.RLock;
|
||||||
|
import org.redisson.api.RedissonClient;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
||||||
@@ -48,8 +43,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.LinkedList;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -65,6 +60,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
private final RedisUtils redisUtils;
|
private final RedisUtils redisUtils;
|
||||||
private final ParamService paramService;
|
private final ParamService paramService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RedissonClient redissonClient;
|
||||||
|
@Autowired
|
||||||
|
private AcsToWmsService acsToWmsService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* task_id:任务标识
|
* task_id:任务标识
|
||||||
* task_code:任务编码
|
* task_code:任务编码
|
||||||
@@ -73,7 +73,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
* @param string 条件
|
* @param string 条件
|
||||||
* @returnzss
|
* @returnzss
|
||||||
*/
|
*/
|
||||||
@LokiLog(type = LokiLogType.ACS_TO_LMS)
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> receiveTaskStatusAcs(String string) {
|
public Map<String, Object> receiveTaskStatusAcs(String string) {
|
||||||
JSONArray array = JSONArray.parseArray(string);
|
JSONArray array = JSONArray.parseArray(string);
|
||||||
@@ -180,10 +179,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
param.put("workorder_qty", jsonObject1.getString("plan_qty"));
|
param.put("workorder_qty", jsonObject1.getString("plan_qty"));
|
||||||
param.put("device_code", deviceService.findByCode(jsonObject1.getString("device_code")).getExtend_code());
|
param.put("device_code", deviceService.findByCode(jsonObject1.getString("device_code")).getExtend_code());
|
||||||
String workorder_uri = paramService.findByCode("mes_url").getValue() + "api/mes/materialIvt";
|
String workorder_uri = paramService.findByCode("mes_url").getValue() + "api/mes/materialIvt";
|
||||||
HttpRequest
|
HttpRequest.post(workorder_uri).body(param.toJSONString()).execute();
|
||||||
.post(workorder_uri)
|
|
||||||
.body(param.toJSONString())
|
|
||||||
.execute();
|
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
status = "400";
|
status = "400";
|
||||||
@@ -196,7 +192,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
return resp;
|
return resp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@LokiLog(type = LokiLogType.ACS_TO_LMS)
|
|
||||||
@Override
|
@Override
|
||||||
public String againApply(String task_id) {
|
public String againApply(String task_id) {
|
||||||
log.info("输入参数:" + task_id);
|
log.info("输入参数:" + task_id);
|
||||||
@@ -220,13 +216,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
return point_code;
|
return point_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
@LokiLog(type = LokiLogType.ACS_TO_LMS)
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> receivePointStatusFromAcs(Map<String, String> jsonObject) {
|
public Map<String, Object> receivePointStatusFromAcs(Map<String, String> jsonObject) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@LokiLog(type = LokiLogType.ACS_TO_LMS)
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> orderFinish(String string) {
|
public Map<String, Object> orderFinish(String string) {
|
||||||
JSONObject orderJson = JSONObject.parseObject(string);
|
JSONObject orderJson = JSONObject.parseObject(string);
|
||||||
@@ -249,10 +245,30 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@LokiLog(type = LokiLogType.ACS_TO_LMS)
|
|
||||||
|
@Override
|
||||||
|
@SneakyThrows
|
||||||
|
public JSONObject apply(JSONObject jsonObject) {
|
||||||
|
String type = (String) jsonObject.get("type");
|
||||||
|
RLock lock = redissonClient.getLock("acs_to_wms:" + type);
|
||||||
|
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||||
|
try {
|
||||||
|
if (tryLock) {
|
||||||
|
return acsToWmsService.transApply(jsonObject);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (tryLock) {
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public JSONObject apply(JSONObject whereJson) {
|
public JSONObject transApply(JSONObject whereJson) {
|
||||||
JSONObject resp = new JSONObject();
|
JSONObject resp = new JSONObject();
|
||||||
String type = whereJson.getString("type");
|
String type = whereJson.getString("type");
|
||||||
String point_code = whereJson.getString("device_code");
|
String point_code = whereJson.getString("device_code");
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
package org.nl.wms.log;
|
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author: lyd
|
|
||||||
* @description: 自定义日志注解,用作LOKI日志分类
|
|
||||||
* @Date: 2022/10/10
|
|
||||||
*/
|
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
|
||||||
@Target({ ElementType.METHOD})
|
|
||||||
@Documented
|
|
||||||
public @interface LokiLog {
|
|
||||||
LokiLogType type() default LokiLogType.DEFAULT;
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
package org.nl.wms.log;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
import org.aspectj.lang.ProceedingJoinPoint;
|
|
||||||
import org.aspectj.lang.Signature;
|
|
||||||
import org.aspectj.lang.annotation.Around;
|
|
||||||
import org.aspectj.lang.annotation.Aspect;
|
|
||||||
import org.aspectj.lang.annotation.Pointcut;
|
|
||||||
import org.aspectj.lang.reflect.MethodSignature;
|
|
||||||
import org.slf4j.MDC;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author: lyd
|
|
||||||
* @description: 自定义日志切面:https://cloud.tencent.com/developer/article/1655923
|
|
||||||
* @Date: 2022/10/10
|
|
||||||
*/
|
|
||||||
@Aspect
|
|
||||||
@Slf4j
|
|
||||||
@Component
|
|
||||||
public class LokiLogAspect {
|
|
||||||
/**
|
|
||||||
* 切到所有OperatorLog注解修饰的方法
|
|
||||||
*/
|
|
||||||
@Pointcut("@annotation(org.nl.wms.log.LokiLog)")
|
|
||||||
public void operatorLog() {
|
|
||||||
// 空方法
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 利用@Around环绕增强
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Around("operatorLog()")
|
|
||||||
public synchronized Object around(ProceedingJoinPoint pjp) throws Throwable {
|
|
||||||
// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
|
|
||||||
// HttpServletRequest request = attributes.getRequest();
|
|
||||||
// HttpServletResponse response = attributes.getResponse();
|
|
||||||
|
|
||||||
Signature signature = pjp.getSignature();
|
|
||||||
MethodSignature methodSignature = (MethodSignature) signature;
|
|
||||||
Method method = methodSignature.getMethod();
|
|
||||||
LokiLog lokiLog = method.getAnnotation(LokiLog.class);
|
|
||||||
|
|
||||||
// 获取描述信息
|
|
||||||
LokiLogType logType = lokiLog.type();
|
|
||||||
|
|
||||||
MDC.put("log_file_type", logType.getDesc());
|
|
||||||
log.info("输入参数:" + JSONObject.toJSONString(pjp.getArgs()));
|
|
||||||
|
|
||||||
Object proceed = pjp.proceed();
|
|
||||||
|
|
||||||
log.info("返回参数:" + JSONObject.toJSONString(proceed));
|
|
||||||
MDC.remove("log_file_type");
|
|
||||||
return proceed;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
package org.nl.wms.log;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author: lyd
|
|
||||||
* @description:
|
|
||||||
* @Date: 2022/10/11
|
|
||||||
*/
|
|
||||||
public enum LokiLogType {
|
|
||||||
DEFAULT("默认"),
|
|
||||||
LMS_TO_MES("LMS请求MES"),
|
|
||||||
MES_TO_LMS("MES请求LMS"),
|
|
||||||
LMS_TO_ACS("LMS请求ACS"),
|
|
||||||
ACS_TO_LMS("ACS请求LMS");
|
|
||||||
|
|
||||||
private String desc;
|
|
||||||
|
|
||||||
LokiLogType(String desc) {
|
|
||||||
this.desc=desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDesc() {
|
|
||||||
return desc;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -6,11 +6,9 @@ spring:
|
|||||||
druid:
|
druid:
|
||||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:yongyu_lms2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
url: jdbc:log4jdbc:mysql://${DB_HOST:47.111.78.178}:${DB_PORT:3306}/${DB_NAME:hf_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||||
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:hongfeng_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
|
||||||
username: ${DB_USER:root}
|
username: ${DB_USER:root}
|
||||||
#password: ${DB_PWD:P@ssw0rd}
|
password: ${DB_PWD:P@ssw0rd}
|
||||||
password: ${DB_PWD:password}
|
|
||||||
# 初始连接数
|
# 初始连接数
|
||||||
initial-size: 5
|
initial-size: 5
|
||||||
# 最小连接数
|
# 最小连接数
|
||||||
@@ -57,7 +55,16 @@ redis:
|
|||||||
database: ${REDIS_DB:15}
|
database: ${REDIS_DB:15}
|
||||||
host: ${REDIS_HOST:127.0.0.1}
|
host: ${REDIS_HOST:127.0.0.1}
|
||||||
port: ${REDIS_PORT:6379}
|
port: ${REDIS_PORT:6379}
|
||||||
password: ${REDIS_PWD:}
|
redisson:
|
||||||
|
config: |
|
||||||
|
threads: 4
|
||||||
|
nettyThreads: 4
|
||||||
|
singleServerConfig:
|
||||||
|
connectionMinimumIdleSize: 8
|
||||||
|
connectionPoolSize: 8
|
||||||
|
address: redis://127.0.0.1:6379
|
||||||
|
idleConnectionTimeout: 10000
|
||||||
|
timeout: 3000
|
||||||
|
|
||||||
# 登录相关配置
|
# 登录相关配置
|
||||||
login:
|
login:
|
||||||
@@ -150,7 +157,4 @@ sa-token:
|
|||||||
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
||||||
# token 前缀
|
# token 前缀
|
||||||
token-prefix: Bearer
|
token-prefix: Bearer
|
||||||
|
is-print: false
|
||||||
loki:
|
|
||||||
url: http://localhost:3100/loki/api/v1
|
|
||||||
systemName: acs
|
|
||||||
|
|||||||
@@ -57,7 +57,16 @@ redis:
|
|||||||
database: ${REDIS_DB:15}
|
database: ${REDIS_DB:15}
|
||||||
host: ${REDIS_HOST:127.0.0.1}
|
host: ${REDIS_HOST:127.0.0.1}
|
||||||
port: ${REDIS_PORT:6379}
|
port: ${REDIS_PORT:6379}
|
||||||
password: ${REDIS_PWD:}
|
redisson:
|
||||||
|
config: |
|
||||||
|
threads: 4
|
||||||
|
nettyThreads: 4
|
||||||
|
singleServerConfig:
|
||||||
|
connectionMinimumIdleSize: 8
|
||||||
|
connectionPoolSize: 8
|
||||||
|
address: redis://127.0.0.1:6379
|
||||||
|
idleConnectionTimeout: 10000
|
||||||
|
timeout: 3000
|
||||||
|
|
||||||
# 登录相关配置
|
# 登录相关配置
|
||||||
login:
|
login:
|
||||||
@@ -150,7 +159,4 @@ sa-token:
|
|||||||
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
||||||
# token 前缀
|
# token 前缀
|
||||||
token-prefix: Bearer
|
token-prefix: Bearer
|
||||||
|
is-print: false
|
||||||
loki:
|
|
||||||
url: http://localhost:3100/loki/api/v1
|
|
||||||
systemName: lms
|
|
||||||
|
|||||||
@@ -150,7 +150,3 @@ sa-token:
|
|||||||
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq
|
||||||
# token 前缀
|
# token 前缀
|
||||||
token-prefix: Bearer
|
token-prefix: Bearer
|
||||||
|
|
||||||
loki:
|
|
||||||
url: http://localhost:3100/loki/api/v1
|
|
||||||
systemName: lms
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ spring:
|
|||||||
freemarker:
|
freemarker:
|
||||||
check-template-location: false
|
check-template-location: false
|
||||||
profiles:
|
profiles:
|
||||||
active: prod
|
active: dev
|
||||||
jackson:
|
jackson:
|
||||||
time-zone: GMT+8
|
time-zone: GMT+8
|
||||||
data:
|
data:
|
||||||
|
|||||||
@@ -14,9 +14,6 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<property name="log.pattern"
|
<property name="log.pattern"
|
||||||
value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
|
value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)"/>
|
||||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/>
|
||||||
<springProperty scope="context" name="lokiUrl" source="loki.url"/>
|
|
||||||
<springProperty scope="context" name="systemName" source="loki.systemName"/>
|
|
||||||
<property name="LOKI_URL" value="${lokiUrl}"/>
|
|
||||||
<property name="SYSTEM_NAME" value="${systemName}"/>
|
<property name="SYSTEM_NAME" value="${systemName}"/>
|
||||||
<property name="LOG_HOME" value="${logPath}"/>
|
<property name="LOG_HOME" value="${logPath}"/>
|
||||||
<!--引入默认的一些设置-->
|
<!--引入默认的一些设置-->
|
||||||
@@ -26,7 +23,7 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
<encoder>
|
<encoder>
|
||||||
<pattern>${log.pattern}</pattern>
|
<pattern>${log.pattern}</pattern>
|
||||||
<charset>${log.charset}</charset>
|
<!-- <charset>${log.charset}</charset>-->
|
||||||
</encoder>
|
</encoder>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
@@ -47,6 +44,7 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
|
||||||
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
|
||||||
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
|
||||||
|
<charset>${log.charset}</charset>
|
||||||
</encoder>
|
</encoder>
|
||||||
|
|
||||||
</appender>
|
</appender>
|
||||||
@@ -58,28 +56,10 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<appender-ref ref="FILE"/>
|
<appender-ref ref="FILE"/>
|
||||||
</appender>
|
</appender>
|
||||||
|
|
||||||
<!--添加loki-->
|
|
||||||
<appender name="lokiAppender" class="com.github.loki4j.logback.Loki4jAppender">
|
|
||||||
<batchTimeoutMs>1000</batchTimeoutMs>
|
|
||||||
<http class="com.github.loki4j.logback.ApacheHttpSender">
|
|
||||||
<url>${LOKI_URL}/push</url>
|
|
||||||
</http>
|
|
||||||
<format>
|
|
||||||
<label>
|
|
||||||
<pattern>system=${SYSTEM_NAME},level=%level,logType=%X{log_file_type:-logType}</pattern>
|
|
||||||
</label>
|
|
||||||
<message>
|
|
||||||
<pattern>${log.pattern}</pattern>
|
|
||||||
</message>
|
|
||||||
<sortByTime>true</sortByTime>
|
|
||||||
</format>
|
|
||||||
</appender>
|
|
||||||
|
|
||||||
<!--开发环境:打印控制台-->
|
<!--开发环境:打印控制台-->
|
||||||
<springProfile name="dev">
|
<springProfile name="dev">
|
||||||
<root level="debug">
|
<root level="debug">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
<appender-ref ref="lokiAppender" />
|
|
||||||
</root>
|
</root>
|
||||||
<logger name="org.springframework" level="ERROR" additivity="false">
|
<logger name="org.springframework" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="CONSOLE"/>
|
<appender-ref ref="CONSOLE"/>
|
||||||
@@ -124,55 +104,55 @@ https://juejin.cn/post/6844903775631572999
|
|||||||
<springProfile name="prod">
|
<springProfile name="prod">
|
||||||
<root level="info">
|
<root level="info">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</root>
|
</root>
|
||||||
<logger name="org.springframework" level="ERROR" additivity="false">
|
<logger name="org.springframework" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="org.apache" level="ERROR" additivity="false">
|
<logger name="org.apache" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="org.hibernate" level="ERROR" additivity="false">
|
<logger name="org.hibernate" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="io.netty" level="ERROR" additivity="false">
|
<logger name="io.netty" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="jdbc" level="ERROR" additivity="false">
|
<logger name="jdbc" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="io.lettuce" level="ERROR" additivity="false">
|
<logger name="io.lettuce" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="com.fasterxml" level="ERROR" additivity="false">
|
<logger name="com.fasterxml" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="org.quartz" level="ERROR" additivity="false">
|
<logger name="org.quartz" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="com.google" level="ERROR" additivity="false">
|
<logger name="com.google" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="springfox" level="ERROR" additivity="false">
|
<logger name="springfox" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="log4jdbc" level="ERROR" additivity="false">
|
<logger name="log4jdbc" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
<logger name="nl.basjes" level="ERROR" additivity="false">
|
<logger name="nl.basjes" level="ERROR" additivity="false">
|
||||||
<appender-ref ref="asyncFileAppender"/>
|
<appender-ref ref="asyncFileAppender"/>
|
||||||
<appender-ref ref="lokiAppender"/>
|
|
||||||
</logger>
|
</logger>
|
||||||
</springProfile>
|
</springProfile>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user