1.增加一个注册持久化日志

This commit is contained in:
wusheng 2015-11-23 23:13:52 +08:00
parent b5761a9c38
commit 5297a4ce38
1 changed files with 63 additions and 46 deletions

View File

@ -4,6 +4,9 @@ import org.apache.commons.io.FileUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.ai.cloud.skywalking.reciever.selfexamination.ServerHealthCollector;
import com.ai.cloud.skywalking.reciever.selfexamination.ServerHeathReading;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
@ -14,54 +17,68 @@ import static com.ai.cloud.skywalking.reciever.conf.Config.RegisterPersistence.*
public class RegisterPersistenceThread extends Thread {
private Logger logger = LogManager.getLogger(RegisterPersistenceThread.class);
private Logger logger = LogManager
.getLogger(RegisterPersistenceThread.class);
private BufferedWriter writer;
private BufferedWriter writer;
public RegisterPersistenceThread() {
super("RegisterPersistenceThread");
}
public RegisterPersistenceThread() {
super("RegisterPersistenceThread");
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(OFFSET_WRITTEN_FILE_WAIT_CYCLE);
} catch (InterruptedException e) {
logger.error("Sleep failure", e);
}
File file = new File(REGISTER_FILE_PARENT_DIRECTORY, REGISTER_FILE_NAME);
File bakFile = new File(REGISTER_FILE_PARENT_DIRECTORY, REGISTER_BAK_FILE_NAME);
try {
FileUtils.copyFile(file, bakFile);
} catch (IOException e) {
logger.error("Sleep failure", e);
}
Collection<FileRegisterEntry> fileRegisterEntries = MemoryRegister.instance().getEntries();
logger.debug("file Register Entries size [{}]", fileRegisterEntries.size());
try {
writer = new BufferedWriter(new FileWriter(file));
} catch (IOException e) {
logger.error("Write The offset file anomalies.");
}
for (FileRegisterEntry fileRegisterEntry : fileRegisterEntries) {
try {
writer.write(fileRegisterEntry.toString() + "\n");
} catch (IOException e) {
logger.error("Write file register entry to offset file failure", e);
}
}
try {
writer.write("EOF\n");
writer.flush();
writer.close();
} catch (IOException e) {
logger.error("Flush offset file failure", e);
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(OFFSET_WRITTEN_FILE_WAIT_CYCLE);
} catch (InterruptedException e) {
logger.error("Sleep failure", e);
}
}
}
File file = new File(REGISTER_FILE_PARENT_DIRECTORY,
REGISTER_FILE_NAME);
File bakFile = new File(REGISTER_FILE_PARENT_DIRECTORY,
REGISTER_BAK_FILE_NAME);
try {
FileUtils.copyFile(file, bakFile);
} catch (IOException e) {
logger.error("Sleep failure", e);
}
Collection<FileRegisterEntry> fileRegisterEntries = MemoryRegister
.instance().getEntries();
logger.debug("file Register Entries size [{}]",
fileRegisterEntries.size());
try {
writer = new BufferedWriter(new FileWriter(file));
} catch (IOException e) {
logger.error("Write The offset file anomalies.");
}
for (FileRegisterEntry fileRegisterEntry : fileRegisterEntries) {
try {
writer.write(fileRegisterEntry.toString() + "\n");
} catch (IOException e) {
logger.error(
"Write file register entry to offset file failure",
e);
}
}
try {
writer.write("EOF\n");
writer.flush();
} catch (IOException e) {
logger.error("Flush offset file failure", e);
} finally {
try {
writer.close();
} catch (IOException e) {
logger.error("close offset file failure", e);
}
}
ServerHealthCollector.getCurrentHeathReading(null).updateData(
ServerHeathReading.INFO, "flush memory register to file.");
}
}
}