controller
/**
* 辅助分析查看别的系统的日志
* @param ip
* @param instance
* @param logfilePath
*/
@Request(url="assistant", view="/um2/env/real-log.jsp")
public void assistant(@SimpleVariable("ip")String ip, @SimpleVariable("instance")String instance,
@SimpleVariable("logfilePath")String logfilePath, @SimpleVariable("username")String username,
@SimpleVariable("password")String pwd){
try {
AuditLog.info(getCurrentUser(request) + "在" + request.getRemoteAddr() + "上使用辅助工具查看了[" + ip + "@" + instance + "]的日志");
CrtRunner.addAssistantTask(ip, instance, logfilePath, username, pwd);
//分配一个通道号
String channelId = UUID.randomUUID().toString();
request.setAttribute("channelId", channelId);
request.setAttribute("instance", instance);
request.setAttribute("ip", ip);
if(!CrtRunner.registerChannel(ip, instance, request.getRemoteAddr(), channelId)){
request.setAttribute("result", "failed");
}
} catch (Exception e) {
logger.error(e.getMessage());
request.setAttribute("result", "failed");
request.setAttribute("msg", e.getMessage());
}
}
public void outMsg(HttpServletResponse resp, String msg) {
try {
resp.getWriter().println(msg);
} catch (IOException e1) {
e1.printStackTrace();
}
}
/**
* 用来检测登陆,什么都不做
*/
@Request(url="testLogin")
public void testLogin(){}
/**
* 读取实时日志
* @param req
* @param resp
*/
@Request(url="readLog")
public void readLog(HttpServletRequest req, HttpServletResponse resp){
LogTask data = null;
try {
String instanceIp = req.getParameter("ip");
String instanceName = req.getParameter("instance");
String channelId = req.getParameter("channelId");
String filter = req.getParameter("filter");
int start = Integer.parseInt(req.getParameter("start"));
try{
data = CrtRunner.readData(instanceIp, instanceName,
start, req.getRemoteAddr(), channelId, filter);
resp.getWriter().println(JSONObject.fromBean(data).toString());
}catch(Exception e){
logger.error(e.getMessage());
outMsg(resp, e.getMessage());
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
outMsg(resp, e.getMessage());
}
}