feat: 日志配置文件

This commit is contained in:
2024-05-22 10:45:20 +08:00
parent 1c00489cb7
commit 74939203ce
5 changed files with 60 additions and 11 deletions

View File

@@ -41,6 +41,11 @@ public final class SystemConstants {
*/
public static final String PROPERTIES_FILE = "settings.properties";
/**
* 日志配置文件名称
*/
public static final String LOG_CONFIG_FILE = "logback.xml";
/**
* sqlite
*/

View File

@@ -17,8 +17,11 @@ import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@@ -39,7 +42,7 @@ public final class SystemInitializer implements Refreshable {
private ScheduledThreadPoolExecutor scheduledThreadPoolExecutor;
private Set<Instance> instances;
private Map<String, Instance> runningInstances;
private final Map<String, ScheduledFuture<?>> runningInstances = new HashMap<>(64);
SystemInitializer(Configuration configuration, MultipleSourceInstanceContext instanceContext) {
this.configuration = configuration;
@@ -56,6 +59,8 @@ public final class SystemInitializer implements Refreshable {
// 释放配置文件
releaseResource(SystemConstants.PROPERTIES_FILE);
// 释放日志文件
releaseResource(SystemConstants.LOG_CONFIG_FILE);
// 刷新配置信息
configuration.refresh();
@@ -66,6 +71,9 @@ public final class SystemInitializer implements Refreshable {
// 初始化线程池
initThreadPool(coreSize);
// 尝试链接dashboard
registerToDashboard();
// 加载实例(不同的容器加载时机不同)
loadInstances();
@@ -128,7 +136,9 @@ public final class SystemInitializer implements Refreshable {
}
// 初始化实例
i.refresh();
scheduledThreadPoolExecutor.scheduleWithFixedDelay(i, 0, i.getInterval(), TimeUnit.SECONDS);
ScheduledFuture<?> future = scheduledThreadPoolExecutor.scheduleWithFixedDelay(i, 0,
i.getInterval(), TimeUnit.SECONDS);
runningInstances.put(i.getName(), future);
log.info("{}({})已启动, 运行周期 {} 秒.", i.getName(), i.getType(), i.getInterval());
}
}
@@ -161,4 +171,12 @@ public final class SystemInitializer implements Refreshable {
log.info("已关闭.");
}, "DDNS-ShutDownHook"));
}
private void registerToDashboard() {
CompletableFuture.runAsync(() -> {
}, scheduledThreadPoolExecutor).whenComplete((r, t) -> {
});
}
}

View File

@@ -23,6 +23,10 @@ public class TaskThreadFactory implements ThreadFactory {
MDC.put("pid", SystemSupport.getPid());
r.run();
};
return new Thread(runnable, String.format("ddns-task-%s", count.getAndIncrement()));
return new Thread(runnable, String.format(getNamePattern(), count.getAndIncrement()));
}
protected String getNamePattern() {
return "ddns-task-%s";
}
}

View File

@@ -0,0 +1,13 @@
package com.serliunx.ddns.thread;
/**
* @author SerLiunx
* @since 1.0
*/
public class UtilThreadFactory extends TaskThreadFactory {
@Override
protected String getNamePattern() {
return "ddns-util-%s";
}
}

View File

@@ -1,7 +1,9 @@
package com.serliunx.ddns.test;
import com.serliunx.ddns.constant.SystemConstants;
import com.serliunx.ddns.core.context.FileInstanceContext;
import com.serliunx.ddns.core.context.GenericInstanceContext;
import com.serliunx.ddns.core.context.MultipleSourceInstanceContext;
import com.serliunx.ddns.core.factory.JsonFileInstanceFactory;
import com.serliunx.ddns.core.factory.XmlFileInstanceFactory;
import com.serliunx.ddns.core.factory.YamlFileInstanceFactory;
@@ -14,7 +16,7 @@ import org.junit.Test;
public class ContextTest {
@Test
public void testContext() {
public void testGenericContext() {
GenericInstanceContext genericInstanceContext = new GenericInstanceContext();
genericInstanceContext.addListableInstanceFactory(new XmlFileInstanceFactory(SystemConstants.USER_INSTANCE_DIR));
@@ -24,4 +26,11 @@ public class ContextTest {
genericInstanceContext.refresh();
genericInstanceContext.getInstances().forEach(System.out::println);
}
@Test
public void testFileContext(){
MultipleSourceInstanceContext context = new FileInstanceContext();
context.getInstances().forEach(System.out::println);
}
}