85 lines
2.0 KiB
Java
85 lines
2.0 KiB
Java
package kr.gmtc.tss.filelog;
|
|
|
|
import java.util.Queue;
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
import kr.gmtc.tss.data.vo.RadarTrackVO;
|
|
import kr.gmtc.tss.main.MainServer;
|
|
import kr.gmtc.tss.util.FileUtil;
|
|
|
|
public class DataLogger implements Runnable {
|
|
|
|
private Logger logger = LoggerFactory.getLogger(this.getClass());
|
|
|
|
private Queue<String> radarTrackQueue;
|
|
private boolean isRunning = true;
|
|
private int listChunkSize = 100;
|
|
private long sleepMillis;
|
|
|
|
public DataLogger(Queue<String> radarTrackQueue, int listChunkSize, long sleepMillis) {
|
|
this.radarTrackQueue = radarTrackQueue;
|
|
this.listChunkSize = listChunkSize;
|
|
this.sleepMillis = sleepMillis;
|
|
}
|
|
|
|
@Override
|
|
public void run() {
|
|
isRunning = true;
|
|
|
|
while (isRunning) {
|
|
try {
|
|
String [] chunkArr = getChunkMessageArr(radarTrackQueue);
|
|
for (int i = 0; i < chunkArr.length; i++) {
|
|
FileUtil.writeLogFile(getMessageBody(chunkArr[i]), MainServer.DATA_FILE_NAME);
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
logger.info("-- [SqlLogger] LogSave error : " +e.getLocalizedMessage());
|
|
}
|
|
|
|
sleep(sleepMillis);
|
|
}
|
|
}
|
|
|
|
private String [] getChunkMessageArr(Queue<String> radarTrackQueue) {
|
|
int loopCnt = 0;
|
|
|
|
if(radarTrackQueue.size()>listChunkSize) {
|
|
loopCnt = listChunkSize;
|
|
}else {
|
|
loopCnt = radarTrackQueue.size();
|
|
}
|
|
|
|
String [] chunkArr = new String[loopCnt];
|
|
|
|
for (int i = 0; i < loopCnt; i++) {
|
|
chunkArr[i] = radarTrackQueue.poll();
|
|
}
|
|
|
|
return chunkArr;
|
|
}
|
|
|
|
private String getMessageBody(String str) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(str);
|
|
sb.append("\n");
|
|
return sb.toString();
|
|
}
|
|
|
|
private void sleep(long millis) {
|
|
try {
|
|
Thread.sleep(millis);
|
|
} catch (InterruptedException e) {
|
|
logger.debug("[SqlLogger] sleep error : "+e.getLocalizedMessage());
|
|
}
|
|
}
|
|
|
|
public void setRunning(boolean isRunning) {
|
|
this.isRunning = isRunning;
|
|
}
|
|
} |