mirror of
https://gitee.com/dromara/Jpom.git
synced 2024-12-02 20:08:40 +08:00
调整日志
This commit is contained in:
parent
b631260606
commit
df66040da2
@ -17,6 +17,7 @@
|
|||||||
11. 【Server】新增查看项目实际执行的命令行
|
11. 【Server】新增查看项目实际执行的命令行
|
||||||
12. 【Server】新增分发日志
|
12. 【Server】新增分发日志
|
||||||
13. 新增清空文件缓存、临时数据缓存
|
13. 新增清空文件缓存、临时数据缓存
|
||||||
|
14. 在线查看Jpom运行日志
|
||||||
|
|
||||||
### 解决BUG、优化功能
|
### 解决BUG、优化功能
|
||||||
|
|
||||||
|
@ -22,12 +22,9 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
* @author jiangzeyin
|
* @author jiangzeyin
|
||||||
* @date 2019/3/16
|
* @date 2019/3/16
|
||||||
*/
|
*/
|
||||||
public class AgentFileTailWatcher extends BaseFileTailWatcher {
|
public class AgentFileTailWatcher<T> extends BaseFileTailWatcher<T> {
|
||||||
private static final ConcurrentHashMap<File, AgentFileTailWatcher> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>();
|
private static final ConcurrentHashMap<File, AgentFileTailWatcher<Session>> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>();
|
||||||
/**
|
|
||||||
* 所有会话
|
|
||||||
*/
|
|
||||||
private final Set<Session> socketSessions = new HashSet<>();
|
|
||||||
|
|
||||||
private AgentFileTailWatcher(File logFile) throws IOException {
|
private AgentFileTailWatcher(File logFile) throws IOException {
|
||||||
super(logFile);
|
super(logFile);
|
||||||
@ -48,9 +45,9 @@ public class AgentFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
if (!file.exists() || file.isDirectory()) {
|
if (!file.exists() || file.isDirectory()) {
|
||||||
throw new IOException("文件不存在或者是目录:" + file.getPath());
|
throw new IOException("文件不存在或者是目录:" + file.getPath());
|
||||||
}
|
}
|
||||||
AgentFileTailWatcher agentFileTailWatcher = CONCURRENT_HASH_MAP.computeIfAbsent(file, s -> {
|
AgentFileTailWatcher<Session> agentFileTailWatcher = CONCURRENT_HASH_MAP.computeIfAbsent(file, s -> {
|
||||||
try {
|
try {
|
||||||
return new AgentFileTailWatcher(file);
|
return new AgentFileTailWatcher<>(file);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DefaultSystemLog.ERROR().error("创建文件监听失败", e);
|
DefaultSystemLog.ERROR().error("创建文件监听失败", e);
|
||||||
return null;
|
return null;
|
||||||
@ -69,8 +66,8 @@ public class AgentFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
* @param session 会话
|
* @param session 会话
|
||||||
*/
|
*/
|
||||||
public static void offline(Session session) {
|
public static void offline(Session session) {
|
||||||
Collection<AgentFileTailWatcher> collection = CONCURRENT_HASH_MAP.values();
|
Collection<AgentFileTailWatcher<Session>> collection = CONCURRENT_HASH_MAP.values();
|
||||||
for (AgentFileTailWatcher agentFileTailWatcher : collection) {
|
for (AgentFileTailWatcher<Session> agentFileTailWatcher : collection) {
|
||||||
agentFileTailWatcher.socketSessions.removeIf(session::equals);
|
agentFileTailWatcher.socketSessions.removeIf(session::equals);
|
||||||
if (agentFileTailWatcher.socketSessions.isEmpty()) {
|
if (agentFileTailWatcher.socketSessions.isEmpty()) {
|
||||||
agentFileTailWatcher.close();
|
agentFileTailWatcher.close();
|
||||||
@ -84,7 +81,7 @@ public class AgentFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
* @param fileName 文件名
|
* @param fileName 文件名
|
||||||
*/
|
*/
|
||||||
public static void offlineFile(File fileName) {
|
public static void offlineFile(File fileName) {
|
||||||
AgentFileTailWatcher agentFileTailWatcher = CONCURRENT_HASH_MAP.get(fileName);
|
AgentFileTailWatcher<Session> agentFileTailWatcher = CONCURRENT_HASH_MAP.get(fileName);
|
||||||
if (null == agentFileTailWatcher) {
|
if (null == agentFileTailWatcher) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -101,7 +98,7 @@ public class AgentFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
* @param fileName 文件名
|
* @param fileName 文件名
|
||||||
*/
|
*/
|
||||||
static void offlineFile(File fileName, Session session) {
|
static void offlineFile(File fileName, Session session) {
|
||||||
AgentFileTailWatcher agentFileTailWatcher = CONCURRENT_HASH_MAP.get(fileName);
|
AgentFileTailWatcher<Session> agentFileTailWatcher = CONCURRENT_HASH_MAP.get(fileName);
|
||||||
if (null == agentFileTailWatcher) {
|
if (null == agentFileTailWatcher) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -119,52 +116,6 @@ public class AgentFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 添加监听会话
|
|
||||||
*
|
|
||||||
* @param session 会话
|
|
||||||
*/
|
|
||||||
private void add(Session session, String name) {
|
|
||||||
if (this.socketSessions.add(session) || this.socketSessions.contains(session)) {
|
|
||||||
LimitQueue<String> limitQueue = this.tailWatcherRun.getLimitQueue();
|
|
||||||
if (limitQueue.size() <= 0) {
|
|
||||||
this.send(session, "日志文件为空");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.send(session, StrUtil.format("监听{}日志成功,目前共有{}人正在查看", name, this.socketSessions.size()));
|
|
||||||
// 开发发送头信息
|
|
||||||
for (String s : limitQueue) {
|
|
||||||
this.send(session, s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// else {
|
|
||||||
// this.send(session, "添加日志监听失败");
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
private void send(Session session, String msg) {
|
|
||||||
try {
|
|
||||||
SocketSessionUtil.send(session, msg);
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void sendAll(String msg) {
|
|
||||||
Iterator<Session> iterator = socketSessions.iterator();
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
Session socketSession = iterator.next();
|
|
||||||
try {
|
|
||||||
SocketSessionUtil.send(socketSession, msg);
|
|
||||||
} catch (Exception e) {
|
|
||||||
DefaultSystemLog.ERROR().error("发送消息失败", e);
|
|
||||||
iterator.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.socketSessions.isEmpty()) {
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -176,4 +127,4 @@ public class AgentFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
// 清理线程记录
|
// 清理线程记录
|
||||||
CONCURRENT_HASH_MAP.remove(this.logFile);
|
CONCURRENT_HASH_MAP.remove(this.logFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,28 +1,92 @@
|
|||||||
package cn.keepbx.util;
|
package cn.keepbx.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.jiangzeyin.common.DefaultSystemLog;
|
||||||
|
import cn.keepbx.jpom.system.JpomRuntimeException;
|
||||||
|
import org.springframework.web.socket.WebSocketSession;
|
||||||
|
|
||||||
|
import javax.websocket.Session;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author bwcx_jzy
|
* @author bwcx_jzy
|
||||||
* @date 2019/7/21
|
* @date 2019/7/21
|
||||||
*/
|
*/
|
||||||
public abstract class BaseFileTailWatcher {
|
public abstract class BaseFileTailWatcher<T> {
|
||||||
|
|
||||||
protected FileTailWatcherRun tailWatcherRun;
|
protected FileTailWatcherRun tailWatcherRun;
|
||||||
protected File logFile;
|
protected File logFile;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所有会话
|
||||||
|
*/
|
||||||
|
protected final Set<T> socketSessions = new HashSet<>();
|
||||||
|
|
||||||
public BaseFileTailWatcher(File logFile) throws IOException {
|
public BaseFileTailWatcher(File logFile) throws IOException {
|
||||||
this.logFile = logFile;
|
this.logFile = logFile;
|
||||||
this.tailWatcherRun = new FileTailWatcherRun(logFile, this::sendAll);
|
this.tailWatcherRun = new FileTailWatcherRun(logFile, this::sendAll);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void send(T session, String msg) {
|
||||||
|
try {
|
||||||
|
if (session instanceof Session) {
|
||||||
|
SocketSessionUtil.send((Session) session, msg);
|
||||||
|
} else if (session instanceof WebSocketSession) {
|
||||||
|
SocketSessionUtil.send((WebSocketSession) session, msg);
|
||||||
|
} else {
|
||||||
|
throw new JpomRuntimeException("没有对应类型");
|
||||||
|
}
|
||||||
|
} catch (IOException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 有新的日志
|
* 有新的日志
|
||||||
*
|
*
|
||||||
* @param msg 日志
|
* @param msg 日志
|
||||||
*/
|
*/
|
||||||
protected abstract void sendAll(String msg);
|
private void sendAll(String msg) {
|
||||||
|
Iterator<T> iterator = socketSessions.iterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
T socketSession = iterator.next();
|
||||||
|
try {
|
||||||
|
this.send(socketSession, msg);
|
||||||
|
} catch (Exception e) {
|
||||||
|
DefaultSystemLog.ERROR().error("发送消息失败", e);
|
||||||
|
iterator.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.socketSessions.isEmpty()) {
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加监听会话
|
||||||
|
*
|
||||||
|
* @param session 会话
|
||||||
|
*/
|
||||||
|
protected void add(T session, String name) {
|
||||||
|
if (this.socketSessions.contains(session) || this.socketSessions.add(session)) {
|
||||||
|
LimitQueue<String> limitQueue = this.tailWatcherRun.getLimitQueue();
|
||||||
|
if (limitQueue.size() <= 0) {
|
||||||
|
this.send(session, "日志文件为空");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.send(session, StrUtil.format("监听{}日志成功,目前共有{}人正在查看", name, this.socketSessions.size()));
|
||||||
|
// 开发发送头信息
|
||||||
|
for (String s : limitQueue) {
|
||||||
|
this.send(session, s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// else {
|
||||||
|
// this.send(session, "添加日志监听失败");
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关闭
|
* 关闭
|
||||||
|
@ -13,6 +13,7 @@ import cn.keepbx.jpom.common.forward.NodeUrl;
|
|||||||
import cn.keepbx.jpom.common.interceptor.UrlPermission;
|
import cn.keepbx.jpom.common.interceptor.UrlPermission;
|
||||||
import cn.keepbx.jpom.model.Role;
|
import cn.keepbx.jpom.model.Role;
|
||||||
import cn.keepbx.jpom.model.log.UserOperateLogV1;
|
import cn.keepbx.jpom.model.log.UserOperateLogV1;
|
||||||
|
import cn.keepbx.jpom.socket.ServiceFileTailWatcher;
|
||||||
import cn.keepbx.jpom.system.WebAopLog;
|
import cn.keepbx.jpom.system.WebAopLog;
|
||||||
import cn.keepbx.util.LayuiTreeUtil;
|
import cn.keepbx.util.LayuiTreeUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
@ -74,6 +75,8 @@ public class LogManageController extends BaseServerController {
|
|||||||
return JsonMessage.getString(405, "不能删除当天的日志");
|
return JsonMessage.getString(405, "不能删除当天的日志");
|
||||||
}
|
}
|
||||||
if (FileUtil.del(file)) {
|
if (FileUtil.del(file)) {
|
||||||
|
// 离线上一个日志
|
||||||
|
ServiceFileTailWatcher.offlineFile(file);
|
||||||
return JsonMessage.getString(200, "删除成功");
|
return JsonMessage.getString(200, "删除成功");
|
||||||
}
|
}
|
||||||
return JsonMessage.getString(500, "删除失败");
|
return JsonMessage.getString(500, "删除失败");
|
||||||
|
@ -1,18 +1,13 @@
|
|||||||
package cn.keepbx.jpom.socket;
|
package cn.keepbx.jpom.socket;
|
||||||
|
|
||||||
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
|
||||||
import cn.jiangzeyin.common.DefaultSystemLog;
|
import cn.jiangzeyin.common.DefaultSystemLog;
|
||||||
import cn.keepbx.util.BaseFileTailWatcher;
|
import cn.keepbx.util.BaseFileTailWatcher;
|
||||||
import cn.keepbx.util.LimitQueue;
|
|
||||||
import cn.keepbx.util.SocketSessionUtil;
|
|
||||||
import org.springframework.web.socket.WebSocketSession;
|
import org.springframework.web.socket.WebSocketSession;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
@ -22,12 +17,8 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
* @author jiangzeyin
|
* @author jiangzeyin
|
||||||
* @date 2019/07/21
|
* @date 2019/07/21
|
||||||
*/
|
*/
|
||||||
public class ServiceFileTailWatcher extends BaseFileTailWatcher {
|
public class ServiceFileTailWatcher<T> extends BaseFileTailWatcher<T> {
|
||||||
private static final ConcurrentHashMap<File, ServiceFileTailWatcher> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>();
|
private static final ConcurrentHashMap<File, ServiceFileTailWatcher<WebSocketSession>> CONCURRENT_HASH_MAP = new ConcurrentHashMap<>();
|
||||||
/**
|
|
||||||
* 所有会话
|
|
||||||
*/
|
|
||||||
private final Set<WebSocketSession> socketSessions = new HashSet<>();
|
|
||||||
|
|
||||||
private ServiceFileTailWatcher(File logFile) throws IOException {
|
private ServiceFileTailWatcher(File logFile) throws IOException {
|
||||||
super(logFile);
|
super(logFile);
|
||||||
@ -48,9 +39,9 @@ public class ServiceFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
if (!file.exists() || file.isDirectory()) {
|
if (!file.exists() || file.isDirectory()) {
|
||||||
throw new IOException("文件不存在或者是目录:" + file.getPath());
|
throw new IOException("文件不存在或者是目录:" + file.getPath());
|
||||||
}
|
}
|
||||||
ServiceFileTailWatcher agentFileTailWatcher = CONCURRENT_HASH_MAP.computeIfAbsent(file, s -> {
|
ServiceFileTailWatcher<WebSocketSession> agentFileTailWatcher = CONCURRENT_HASH_MAP.computeIfAbsent(file, s -> {
|
||||||
try {
|
try {
|
||||||
return new ServiceFileTailWatcher(file);
|
return new ServiceFileTailWatcher<>(file);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DefaultSystemLog.ERROR().error("创建文件监听失败", e);
|
DefaultSystemLog.ERROR().error("创建文件监听失败", e);
|
||||||
return null;
|
return null;
|
||||||
@ -69,8 +60,8 @@ public class ServiceFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
* @param session 会话
|
* @param session 会话
|
||||||
*/
|
*/
|
||||||
public static void offline(WebSocketSession session) {
|
public static void offline(WebSocketSession session) {
|
||||||
Collection<ServiceFileTailWatcher> collection = CONCURRENT_HASH_MAP.values();
|
Collection<ServiceFileTailWatcher<WebSocketSession>> collection = CONCURRENT_HASH_MAP.values();
|
||||||
for (ServiceFileTailWatcher agentFileTailWatcher : collection) {
|
for (ServiceFileTailWatcher<WebSocketSession> agentFileTailWatcher : collection) {
|
||||||
agentFileTailWatcher.socketSessions.removeIf(session::equals);
|
agentFileTailWatcher.socketSessions.removeIf(session::equals);
|
||||||
if (agentFileTailWatcher.socketSessions.isEmpty()) {
|
if (agentFileTailWatcher.socketSessions.isEmpty()) {
|
||||||
agentFileTailWatcher.close();
|
agentFileTailWatcher.close();
|
||||||
@ -78,77 +69,45 @@ public class ServiceFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关闭文件
|
||||||
|
*
|
||||||
|
* @param fileName 文件
|
||||||
|
*/
|
||||||
|
public static void offlineFile(File fileName) {
|
||||||
|
ServiceFileTailWatcher<WebSocketSession> agentFileTailWatcher = CONCURRENT_HASH_MAP.get(fileName);
|
||||||
|
if (null == agentFileTailWatcher) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Set<WebSocketSession> socketSessions = agentFileTailWatcher.socketSessions;
|
||||||
|
for (WebSocketSession socketSession : socketSessions) {
|
||||||
|
offline(socketSession);
|
||||||
|
}
|
||||||
|
agentFileTailWatcher.close();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关闭文件读取流
|
* 关闭文件读取流
|
||||||
*
|
*
|
||||||
* @param fileName 文件名
|
* @param fileName 文件名
|
||||||
*/
|
*/
|
||||||
public static void offlineFile(File fileName, WebSocketSession session) {
|
public static void offlineFile(File fileName, WebSocketSession session) {
|
||||||
ServiceFileTailWatcher agentFileTailWatcher = CONCURRENT_HASH_MAP.get(fileName);
|
ServiceFileTailWatcher<WebSocketSession> serviceFileTailWatcher = CONCURRENT_HASH_MAP.get(fileName);
|
||||||
if (null == agentFileTailWatcher) {
|
if (null == serviceFileTailWatcher) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Set<WebSocketSession> socketSessions = agentFileTailWatcher.socketSessions;
|
Set<WebSocketSession> socketSessions = serviceFileTailWatcher.socketSessions;
|
||||||
for (WebSocketSession socketSession : socketSessions) {
|
for (WebSocketSession socketSession : socketSessions) {
|
||||||
if (socketSession.equals(session)) {
|
if (socketSession.equals(session)) {
|
||||||
offline(socketSession);
|
offline(socketSession);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (agentFileTailWatcher.socketSessions.isEmpty()) {
|
if (serviceFileTailWatcher.socketSessions.isEmpty()) {
|
||||||
agentFileTailWatcher.close();
|
serviceFileTailWatcher.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 添加监听会话
|
|
||||||
*
|
|
||||||
* @param session 会话
|
|
||||||
*/
|
|
||||||
private void add(WebSocketSession session, String name) {
|
|
||||||
if (this.socketSessions.add(session) || this.socketSessions.contains(session)) {
|
|
||||||
LimitQueue<String> limitQueue = this.tailWatcherRun.getLimitQueue();
|
|
||||||
if (limitQueue.size() <= 0) {
|
|
||||||
this.send(session, "日志文件为空");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.send(session, StrUtil.format("监听{}日志成功,目前共有{}人正在查看", name, this.socketSessions.size()));
|
|
||||||
// 开发发送头信息
|
|
||||||
for (String s : limitQueue) {
|
|
||||||
this.send(session, s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// else {
|
|
||||||
// this.send(session, "添加日志监听失败");
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
|
|
||||||
private void send(WebSocketSession session, String msg) {
|
|
||||||
try {
|
|
||||||
SocketSessionUtil.send(session, msg);
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void sendAll(String msg) {
|
|
||||||
Iterator<WebSocketSession> iterator = socketSessions.iterator();
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
WebSocketSession socketSession = iterator.next();
|
|
||||||
try {
|
|
||||||
SocketSessionUtil.send(socketSession, msg);
|
|
||||||
} catch (Exception e) {
|
|
||||||
DefaultSystemLog.ERROR().error("发送消息失败", e);
|
|
||||||
iterator.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (this.socketSessions.isEmpty()) {
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关闭
|
* 关闭
|
||||||
*/
|
*/
|
||||||
@ -158,4 +117,4 @@ public class ServiceFileTailWatcher extends BaseFileTailWatcher {
|
|||||||
// 清理线程记录
|
// 清理线程记录
|
||||||
CONCURRENT_HASH_MAP.remove(this.logFile);
|
CONCURRENT_HASH_MAP.remove(this.logFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
if (obj.data.children) {
|
if (obj.data.children) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
$("#nowFileName").attr("path", obj.data.path);
|
||||||
$("#nowFileName").text(obj.data.title);
|
$("#nowFileName").text(obj.data.title);
|
||||||
openSocket(obj.data.path);
|
openSocket(obj.data.path);
|
||||||
},
|
},
|
||||||
@ -71,9 +72,12 @@
|
|||||||
success: function (data) {
|
success: function (data) {
|
||||||
layer.msg(data.msg);
|
layer.msg(data.msg);
|
||||||
if (200 == data.code) {
|
if (200 == data.code) {
|
||||||
setTimeout(function () {
|
var attr = $("#nowFileName").attr("path");
|
||||||
location.reload();
|
if (attr == data.path) {
|
||||||
}, 2000)
|
setTimeout(function () {
|
||||||
|
location.reload();
|
||||||
|
}, 2000)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
reloadTree();
|
reloadTree();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user