feat: 日志现在会输出线程正在进行的活动.
This commit is contained in:
@@ -10,7 +10,14 @@ import com.serliunx.ddns.core.instance.Instance;
|
|||||||
*/
|
*/
|
||||||
public final class InstanceContextHolder {
|
public final class InstanceContextHolder {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前线程所涉及的实例信息
|
||||||
|
*/
|
||||||
private static final ThreadLocal<Instance> INSTANCE_THREAD_LOCAL = new ThreadLocal<>();
|
private static final ThreadLocal<Instance> INSTANCE_THREAD_LOCAL = new ThreadLocal<>();
|
||||||
|
/**
|
||||||
|
* 当前线程所需要的附加信息
|
||||||
|
*/
|
||||||
|
private static final ThreadLocal<String> ADDITIONAL_INFORMATION_THREAD_LOCAL = new ThreadLocal<>();
|
||||||
|
|
||||||
private InstanceContextHolder() {throw new UnsupportedOperationException();}
|
private InstanceContextHolder() {throw new UnsupportedOperationException();}
|
||||||
|
|
||||||
@@ -30,10 +37,33 @@ public final class InstanceContextHolder {
|
|||||||
return INSTANCE_THREAD_LOCAL.get();
|
return INSTANCE_THREAD_LOCAL.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置附加信息
|
||||||
|
* @param additional 附加信息
|
||||||
|
*/
|
||||||
|
public static void setAdditional(String additional) {
|
||||||
|
ADDITIONAL_INFORMATION_THREAD_LOCAL.set(additional);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取附加信息
|
||||||
|
* @return 附加信息
|
||||||
|
*/
|
||||||
|
public static String getAdditional() {
|
||||||
|
return ADDITIONAL_INFORMATION_THREAD_LOCAL.get();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清除当前线程的实例信息
|
* 清除当前线程的实例信息
|
||||||
*/
|
*/
|
||||||
public static void clear() {
|
public static void clearInstance() {
|
||||||
INSTANCE_THREAD_LOCAL.remove();
|
INSTANCE_THREAD_LOCAL.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清除当前线程的附加信息
|
||||||
|
*/
|
||||||
|
public static void clearAdditional() {
|
||||||
|
ADDITIONAL_INFORMATION_THREAD_LOCAL.remove();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ public final class SystemInitializer implements Refreshable, Clearable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
|
InstanceContextHolder.setAdditional("main-refreshing");
|
||||||
log.info("程序正在初始化, 请稍候.");
|
log.info("程序正在初始化, 请稍候.");
|
||||||
|
|
||||||
// 检查正在运行的实例信息, 安全的停止(手动刷新时需要执行的逻辑, 初始化不需要)
|
// 检查正在运行的实例信息, 安全的停止(手动刷新时需要执行的逻辑, 初始化不需要)
|
||||||
@@ -82,6 +83,7 @@ public final class SystemInitializer implements Refreshable, Clearable {
|
|||||||
// 实例提交后, 清理实例、配置缓存, 因为读取一次就不需要了
|
// 实例提交后, 清理实例、配置缓存, 因为读取一次就不需要了
|
||||||
clear();
|
clear();
|
||||||
log.info("初始化完成!");
|
log.info("初始化完成!");
|
||||||
|
InstanceContextHolder.clearAdditional();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -133,7 +135,7 @@ public final class SystemInitializer implements Refreshable, Clearable {
|
|||||||
|
|
||||||
for (Instance i : instances) {
|
for (Instance i : instances) {
|
||||||
if (!i.validate()) {
|
if (!i.validate()) {
|
||||||
log.error("实例{}({})参数校验不通过, 将不会被运行.", i.getName(), i.getType());
|
log.warn("实例{}({})参数校验不通过, 将不会被运行.", i.getName(), i.getType());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 初始化实例
|
// 初始化实例
|
||||||
@@ -154,6 +156,7 @@ public final class SystemInitializer implements Refreshable, Clearable {
|
|||||||
|
|
||||||
// 提交定时获取网络IP的定时任务
|
// 提交定时获取网络IP的定时任务
|
||||||
scheduledThreadPoolExecutor.scheduleAtFixedRate(() -> {
|
scheduledThreadPoolExecutor.scheduleAtFixedRate(() -> {
|
||||||
|
InstanceContextHolder.setAdditional("ip-update");
|
||||||
log.info("正在尝试获取本机最新的IP地址.");
|
log.info("正在尝试获取本机最新的IP地址.");
|
||||||
IPAddressResponse response = IPAddressClient.instance.getIPAddress();
|
IPAddressResponse response = IPAddressClient.instance.getIPAddress();
|
||||||
String ip;
|
String ip;
|
||||||
@@ -162,13 +165,16 @@ public final class SystemInitializer implements Refreshable, Clearable {
|
|||||||
NetworkContextHolder.setIpAddress(ip);
|
NetworkContextHolder.setIpAddress(ip);
|
||||||
log.info("本机最新公网IP地址 => {}", ip);
|
log.info("本机最新公网IP地址 => {}", ip);
|
||||||
}
|
}
|
||||||
|
InstanceContextHolder.clearAdditional();
|
||||||
}, 0, configuration.getLong(KEY_TASK_REFRESH_INTERVAL_IP, 300L), TimeUnit.SECONDS);
|
}, 0, configuration.getLong(KEY_TASK_REFRESH_INTERVAL_IP, 300L), TimeUnit.SECONDS);
|
||||||
|
|
||||||
// 添加进程结束钩子函数
|
// 添加进程结束钩子函数
|
||||||
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||||
|
InstanceContextHolder.setAdditional("stopping");
|
||||||
log.info("程序正在关闭中, 可能需要一定时间.");
|
log.info("程序正在关闭中, 可能需要一定时间.");
|
||||||
scheduledThreadPoolExecutor.shutdown();
|
scheduledThreadPoolExecutor.shutdown();
|
||||||
log.info("已关闭.");
|
log.info("已关闭.");
|
||||||
|
InstanceContextHolder.clearAdditional();
|
||||||
}, "DDNS-ShutDownHook"));
|
}, "DDNS-ShutDownHook"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user