Commit a3984fd5 by 赵剑炜

修改ES

parent 5240b5de
package com.junmp.jyzb.logManager;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.junmp.jyzb.logManager.service.EsLogService;
import com.junmp.v2.log.api.LogRecordApi;
import com.junmp.v2.log.api.bean.dto.LogRecordDto;
import com.junmp.v2.log.api.thread.LogManagerPool;
import com.junmp.v2.log.db.entity.SysLog;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;
import java.util.TimerTask;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
public class ESRecordManager implements LogRecordApi {
private static final Logger log = LoggerFactory.getLogger(com.junmp.v2.log.db.DbLogRecordManager.class);
private final EsLogService esService;
private final LogManagerPool logManagerPool;
private final LogRefreshManager logRefreshManager;
public ESRecordManager(LogManagerPool logManagerPool, EsLogService esService) {
this.logManagerPool = logManagerPool;
this.esService = esService;
this.logRefreshManager = new ESRecordManager.LogRefreshManager();
this.logRefreshManager.start();
}
public void add(LogRecordDto logRecord) {
if (null != logRecord) {
this.addBatch(CollectionUtil.list(false, new LogRecordDto[]{logRecord}));
}
}
public void addAsync(final LogRecordDto logRecord) {
this.logManagerPool.executeLog(new TimerTask() {
public void run() {
ESRecordManager.this.logRefreshManager.putLog(logRecord);
}
});
}
public void addBatch(List<LogRecordDto> logRecords) {
if (!ObjectUtil.isEmpty(logRecords)) {
List<SysLog> sysLogList = (List)logRecords.stream().map((dto) -> {
SysLog sysLog = new SysLog();
BeanUtil.copyProperties(dto, sysLog, new String[0]);
if (StrUtil.isEmpty(sysLog.getLogName())) {
sysLog.setLogName("API接口日志记录");
}
if (StrUtil.isEmpty(sysLog.getAppName())) {
sysLog.setAppName("none-app-name");
}
return sysLog;
}).collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(sysLogList)) {
// this.esService.saveBatch(sysLogList);
}
}
}
class LogRefreshManager extends Thread {
private final long sleepTime;
private final int maxCount;
private final AtomicLong refreshMark = new AtomicLong();
public AtomicInteger count = new AtomicInteger(0);
private final Queue<LogRecordDto> queue = new ConcurrentLinkedQueue();
public LogRefreshManager() {
this.sleepTime = 3000L;
this.maxCount = 300;
}
public LogRefreshManager(long sleepTime) {
this.sleepTime = sleepTime;
this.maxCount = 300;
}
public LogRefreshManager(int maxCount) {
this.sleepTime = 3000L;
this.maxCount = maxCount;
}
public LogRefreshManager(long sleepTime, int maxCount) {
this.sleepTime = sleepTime;
this.maxCount = maxCount;
}
public void putLog(LogRecordDto record) {
int queueDataCount = this.count.get();
if (queueDataCount == 0) {
this.refreshMark.getAndSet(System.currentTimeMillis());
}
if (queueDataCount < this.maxCount * 2) {
this.queue.offer(record);
this.count.incrementAndGet();
}
}
private void refresh() {
this.refreshMark.getAndSet(System.currentTimeMillis());
int num = this.count.getAndSet(0);
List<LogRecordDto> cacheAll = new ArrayList(num);
for(int i = 0; i < num; ++i) {
LogRecordDto item = (LogRecordDto)this.queue.poll();
if (null == item) {
break;
}
cacheAll.add(item);
}
// if (null != cacheAll && cacheAll.size() > 0) {
// this.addBatch(cacheAll);
// }
}
private void timing() {
long currentTimeMillis = System.currentTimeMillis();
if (this.refreshMark.get() + this.sleepTime <= currentTimeMillis && this.count.get() > 0) {
this.refresh();
}
}
private void listener() {
if (this.count.get() >= this.maxCount) {
this.refresh();
}
}
public void run() {
try {
while(true) {
this.listener();
this.timing();
TimeUnit.MILLISECONDS.sleep(10L);
}
} catch (InterruptedException var2) {
if (ESRecordManager.log.isDebugEnabled()) {
var2.printStackTrace();
}
ESRecordManager.log.error(var2.getMessage());
}
}
}
}
\ No newline at end of file
package com.junmp.jyzb.logManager;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.junmp.v2.db.api.page.PageResult;
import com.junmp.v2.log.api.LogManagerApi;
import com.junmp.v2.log.api.bean.dto.LogRecordDto;
import com.junmp.v2.log.api.bean.req.LogRequest;
import com.junmp.v2.log.db.entity.SysLog;
import com.junmp.v2.log.db.service.SysLogService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.annotation.Resource;
import java.util.*;
public class EsLogManager implements LogManagerApi {
private static final Logger log = LoggerFactory.getLogger(EsLogManager.class);
@Resource
private SysLogService sysLogService;
public EsLogManager() {
}
public List<LogRecordDto> findList(LogRequest request) {
List<SysLog> sysLogList = this.sysLogService.findList(request);
List<LogRecordDto> dtoList = CollUtil.newArrayList(new LogRecordDto[0]);
BeanUtil.copyProperties(sysLogList, dtoList, new String[0]);
return dtoList;
}
public PageResult<LogRecordDto> findPage(LogRequest request) {
return this.sysLogService.getLogPage(request);
}
public void del(LogRequest request) {
this.sysLogService.del(request);
}
public void clearLog(LogRequest request) {
if (ObjectUtil.isNotNull(request) && ObjectUtil.isNotNull(request.getLogType())) {
this.sysLogService.clearLogByDate(request);
}
}
public LogRecordDto detail(LogRequest request) {
SysLog detail = this.sysLogService.detail(request);
LogRecordDto dto = new LogRecordDto();
BeanUtil.copyProperties(detail, dto, new String[0]);
return dto;
}
}
package com.junmp.jyzb.logManager.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.junmp.jyzb.api.bean.dto.ESTypeDto;
import com.junmp.jyzb.api.bean.dto.EquipmentTreeDto;
import com.junmp.jyzb.api.bean.dto.EquipmentTypeDto;
import com.junmp.jyzb.api.bean.query.QueryEquipmentTypeReq;
import com.junmp.jyzb.api.bean.req.UpdateEquipmentTypeReq;
import com.junmp.jyzb.entity.EquipmentType;
import com.junmp.jyzb.entity.EsLog;
import com.junmp.jyzb.utils.ResponseResult;
import java.io.IOException;
import java.util.List;
public interface EsLogService extends IService<EsLog> {
Object addEs();
}
\ No newline at end of file
package com.junmp.jyzb.logManager.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.junmp.jyzb.entity.EquipmentType;
import com.junmp.jyzb.entity.EsLog;
import com.junmp.jyzb.logManager.service.EsLogService;
import com.junmp.jyzb.mapper.EquipmentTypeMapper;
import com.junmp.jyzb.mapper.EsLogMapper;
import com.junmp.jyzb.service.EquipmentTypeService;
import org.springframework.stereotype.Service;
@Service
public class EsLogServiceImpl extends ServiceImpl<EsLogMapper, EsLog> implements EsLogService {
@Override
public Object addEs() {
return null;
}
}
package com.junmp.jyzb.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.junmp.jyzb.entity.EquipmentType;
import com.junmp.jyzb.entity.EsLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface EsLogMapper extends BaseMapper<EsLog> {
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>junmp-jyzb-app</artifactId>
<groupId>com.junmp.jyzb</groupId>
<version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jyzb-common</artifactId>
<dependencies>
<!--fastJson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<!-- jwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<!-- &lt;!&ndash; SpringBoot 测试 &ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-test</artifactId>-->
<!-- <scope>test</scope>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.swagger</groupId>-->
<!-- <artifactId>swagger-annotations</artifactId>-->
<!-- <version>1.5.22</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-web</artifactId>-->
<!-- </dependency>-->
<!-- &lt;!&ndash; SpringBoot集成mybatis框架 &ndash;&gt;-->
<!-- <dependency>-->
<!-- <groupId>com.baomidou</groupId>-->
<!-- <artifactId>mybatis-plus-boot-starter</artifactId>-->
<!-- <version>3.5.2</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.junmp.jyzb</groupId>-->
<!-- <artifactId>jyzb-boot</artifactId>-->
<!-- <version>1.0.0</version>-->
<!-- </dependency>-->
</dependencies>
</project>
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论