Merge branch 'master' of http://121.40.234.130:8899/root/nladmin
# Conflicts: # nladmin-system/src/main/java/org/nl/wms/pda/mps/rest/OutController.java
This commit is contained in:
@@ -28,6 +28,7 @@ import org.aspectj.lang.reflect.MethodSignature;
|
||||
import org.nl.modules.common.utils.RequestHolder;
|
||||
import org.nl.modules.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.utils.StringUtils;
|
||||
import org.nl.modules.common.utils.ThrowableUtil;
|
||||
import org.nl.modules.logging.domain.Log;
|
||||
import org.nl.modules.logging.service.LogService;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -132,8 +133,7 @@ public class LogAspect {
|
||||
public void logAfterThrowing(JoinPoint joinPoint, Throwable e) {
|
||||
Log log = new Log("ERROR",System.currentTimeMillis() - currentTime.get());
|
||||
currentTime.remove();
|
||||
// log.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes());
|
||||
// log.setExceptionDetail(null);
|
||||
log.setExceptionDetail(ThrowableUtil.getStackTrace(e).getBytes());
|
||||
HttpServletRequest request = RequestHolder.getHttpServletRequest();
|
||||
logService.save(getUsername(), StringUtils.getBrowser(request), StringUtils.getIp(request), (ProceedingJoinPoint)joinPoint, log);
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@ import cn.hutool.core.lang.Dict;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.reflect.MethodSignature;
|
||||
import org.nl.modules.common.utils.PageUtil;
|
||||
@@ -33,10 +33,6 @@ import org.nl.modules.logging.service.LogService;
|
||||
import org.nl.modules.logging.service.dto.LogQueryCriteria;
|
||||
import org.nl.modules.logging.service.mapstruct.LogErrorMapper;
|
||||
import org.nl.modules.logging.service.mapstruct.LogSmallMapper;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.slf4j.Marker;
|
||||
import org.slf4j.MarkerFactory;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -57,9 +53,8 @@ import java.util.Map;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class LogServiceImpl implements LogService {
|
||||
private static final Marker MARKER = MarkerFactory.getMarker("request");
|
||||
private static final Logger log = LoggerFactory.getLogger(LogServiceImpl.class);
|
||||
private final LogRepository logRepository;
|
||||
private final LogErrorMapper logErrorMapper;
|
||||
private final LogSmallMapper logSmallMapper;
|
||||
@@ -107,9 +102,7 @@ public class LogServiceImpl implements LogService {
|
||||
logDto.setMethod(methodName);
|
||||
logDto.setUsername(username);
|
||||
logDto.setParams(getParameter(method, joinPoint.getArgs()));
|
||||
// logDto.setParams("");
|
||||
logDto.setBrowser(browser);
|
||||
log.info(MARKER,JSONObject.toJSONString(logDto));
|
||||
logRepository.save(logDto);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,16 +25,10 @@ public class LokiController {
|
||||
|
||||
private final LokiService lokiService;
|
||||
|
||||
@GetMapping("/labels")
|
||||
@GetMapping("/labels/values")
|
||||
@ApiOperation("获取标签")
|
||||
public ResponseEntity<Object> labels() {
|
||||
return new ResponseEntity<>(lokiService.getLabels(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/values")
|
||||
@ApiOperation("根据标签获取值")
|
||||
public ResponseEntity<Object> getAllValues(@RequestBody String label) {
|
||||
return new ResponseEntity<>(lokiService.getValuesByLabel(label), HttpStatus.OK);
|
||||
public ResponseEntity<Object> labelsValues() {
|
||||
return new ResponseEntity<>(lokiService.getLabelsValues(), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/logs")
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.modules.loki.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
/**
|
||||
@@ -8,18 +9,6 @@ import com.alibaba.fastjson.JSONObject;
|
||||
* @Date: 2022-08-15
|
||||
*/
|
||||
public interface LokiService {
|
||||
/**
|
||||
* 获取日志的所有标签
|
||||
* @return
|
||||
*/
|
||||
JSONObject getLabels();
|
||||
|
||||
/**
|
||||
* 根据label获取值
|
||||
* @param label
|
||||
* @return
|
||||
*/
|
||||
JSONObject getValuesByLabel(String label);
|
||||
|
||||
/**
|
||||
* 获取日志信息
|
||||
@@ -27,4 +16,10 @@ public interface LokiService {
|
||||
* @return
|
||||
*/
|
||||
JSONObject getLogData(JSONObject json);
|
||||
|
||||
/**
|
||||
* 获取labels和values树
|
||||
* @return
|
||||
*/
|
||||
JSONArray getLabelsValues();
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ 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;
|
||||
@@ -23,20 +24,6 @@ public class LokiServiceImpl implements LokiService {
|
||||
@Value("${loki.systemName}")
|
||||
private String systemName;
|
||||
|
||||
@Override
|
||||
public JSONObject getLabels() {
|
||||
String result = HttpUtil.get(lokiUrl + "/labels", CharsetUtil.CHARSET_UTF_8);
|
||||
JSONObject parse = (JSONObject) JSONObject.parse(result);
|
||||
return parse;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getValuesByLabel(String label) {
|
||||
String result = HttpUtil.get(lokiUrl + "/label/" + label + "/values", CharsetUtil.CHARSET_UTF_8);
|
||||
JSONObject parse = (JSONObject) JSONObject.parse(result);
|
||||
return parse;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getLogData(JSONObject json) {
|
||||
String logLabel = "";
|
||||
@@ -78,4 +65,49 @@ public class LokiServiceImpl implements LokiService {
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
package org.nl.modules.quartz.task;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
@@ -29,7 +28,6 @@ import org.springframework.stereotype.Component;
|
||||
public class TestTask {
|
||||
|
||||
public void run(){
|
||||
|
||||
log.info("run 执行成功");
|
||||
}
|
||||
|
||||
@@ -38,7 +36,6 @@ public class TestTask {
|
||||
}
|
||||
|
||||
public void run2(){
|
||||
WQLObject.getWQLObject("sys_param");
|
||||
log.info("run2 执行成功");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -105,29 +105,12 @@ public class ExecutionJob extends QuartzJobBean {
|
||||
//更新状态
|
||||
quartzJobService.updateIsPause(quartzJob);
|
||||
}
|
||||
// if (quartzJob.getEmail() != null) {
|
||||
// EmailService emailService = SpringContextHolder.getBean(EmailService.class);
|
||||
// // 邮箱报警
|
||||
// EmailVo emailVo = taskAlarm(quartzJob, ThrowableUtil.getStackTrace(e));
|
||||
// emailService.send(emailVo, emailService.find());
|
||||
// }
|
||||
} finally {
|
||||
//异常时候打印日志
|
||||
log.info(logDto.toString());
|
||||
quartzLogRepository.save(logDto);
|
||||
} finally {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// private EmailVo taskAlarm(QuartzJob quartzJob, String msg) {
|
||||
// EmailVo emailVo = new EmailVo();
|
||||
// emailVo.setSubject("定时任务【" + quartzJob.getJobName() + "】执行失败,请尽快处理!");
|
||||
// Map<String, Object> data = new HashMap<>(16);
|
||||
// data.put("task", quartzJob);
|
||||
// data.put("msg", msg);
|
||||
// TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH));
|
||||
// Template template = engine.getTemplate("email/taskAlarm.ftl");
|
||||
// emailVo.setContent(template.render(data));
|
||||
// List<String> emails = Arrays.asList(quartzJob.getEmail().split("[,,]"));
|
||||
// emailVo.setTos(emails);
|
||||
// return emailVo;
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -9,8 +9,10 @@ import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.modules.common.config.RsaProperties;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.RedisUtils;
|
||||
import org.nl.modules.common.utils.RsaUtils;
|
||||
import org.nl.modules.common.utils.dto.CurrentUser;
|
||||
import org.nl.modules.security.service.dto.AuthUserDto;
|
||||
import org.nl.modules.system.service.RoleService;
|
||||
@@ -48,8 +50,8 @@ public class MobileAuthorizationController {
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> login(@Validated @RequestBody AuthUserDto authUser, HttpServletRequest request) throws Exception {
|
||||
// 密码解密 - 前端的加密规则: encrypt(根据实际更改)
|
||||
String password = authUser.getPassword();
|
||||
// String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword());
|
||||
// String password = authUser.getPassword();
|
||||
String password = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, authUser.getPassword());
|
||||
// 校验数据库
|
||||
// 根据用户名查询,在比对密码
|
||||
UserDto userDto = userService.findByName(authUser.getUsername()); // 拿不到已经抛出异常
|
||||
@@ -75,7 +77,6 @@ public class MobileAuthorizationController {
|
||||
|
||||
// 返回 token 与 用户信息
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("roles", permissionList);
|
||||
jsonObject.put("user", userDto);
|
||||
Map<String, Object> authInfo = new HashMap<String, Object>(2) {{
|
||||
put("token", StpUtil.getTokenValue());
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.nl.wms.autotask;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 自动清除日志(操作日志、异常日志)数据
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class CleanLog {
|
||||
public void run(){
|
||||
log.info("run 执行成功");
|
||||
}
|
||||
|
||||
}
|
||||
15
nladmin-system/src/main/java/org/nl/wms/log/LokiLog.java
Normal file
15
nladmin-system/src/main/java/org/nl/wms/log/LokiLog.java
Normal file
@@ -0,0 +1,15 @@
|
||||
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;
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
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.name());
|
||||
log.info("输入参数:" + JSONObject.toJSONString(pjp.getArgs()));
|
||||
|
||||
Object proceed = pjp.proceed();
|
||||
|
||||
log.info("返回参数:" + JSONObject.toJSONString(proceed));
|
||||
MDC.remove("log_file_type");
|
||||
return proceed;
|
||||
|
||||
}
|
||||
}
|
||||
17
nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java
Normal file
17
nladmin-system/src/main/java/org/nl/wms/log/LokiLogType.java
Normal file
@@ -0,0 +1,17 @@
|
||||
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");
|
||||
|
||||
private String desc;
|
||||
LokiLogType(String desc) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -79,12 +79,15 @@ https://juejin.cn/post/6844903775631572999
|
||||
<springProfile name="dev">
|
||||
<root level="info">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
<!-- <appender-ref ref="lokiAppender" />-->
|
||||
<appender-ref ref="lokiAppender" />
|
||||
</root>
|
||||
|
||||
<logger name="jdbc.audit" level="ERROR" additivity="false">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
<logger name="jdbc.sqltiming" level="ERROR" additivity="false">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
<logger name="jdbc.resultset" level="ERROR" additivity="false">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
@@ -106,6 +109,9 @@ https://juejin.cn/post/6844903775631572999
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
<appender-ref ref="lokiAppender" />
|
||||
</root>
|
||||
<logger name="jdbc.sqltiming" level="ERROR" additivity="false">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
<logger name="jdbc.audit" level="ERROR" additivity="false">
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</logger>
|
||||
|
||||
Reference in New Issue
Block a user