网页输出日志文件
@Controller
@RequestMapping("/query/{username}/{password}")
public class QueryController {
private HttpServletRequest request;
private HttpServletResponse response;
private String username;
private String password;
final String userdir = System.getProperty("user.dir");
final String logPath = userdir.replace("bin", "logs");
@ModelAttribute
public void init(@PathVariable String username,@PathVariable String password,HttpServletRequest request,HttpServletResponse response){
this.username = username;
this.password = password;
this.request = request;
this.response = response;
}
private void outFile(String path){
File file = new File(path);
try(
InputStreamReader read = new InputStreamReader(new FileInputStream(file),"UTF-8");
BufferedReader br=new BufferedReader(read)
) {
StringBuilder sb = new StringBuilder();
htmlPrefix(sb);
String r = br.readLine();
while (r != null) {
sb.append("<pre>" + r + "</pre>");
r = br.readLine();
}
htmlSuffix(sb);
responseOut(response, sb.toString());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@RequestMapping("/logFile")
@ResponseBody
public String queryLogFile(String filename) {
if(checkUser()){
if(filename !=null) {
String path = logPath + "/" + filename;
outFile(path);
}
}
return null;
}
@RequestMapping("/log")
@ResponseBody
public String queryLog(){
if(checkUser()) {
StringBuilder sb = new StringBuilder();
htmlPrefix(sb);
File file = new File(logPath);
File[] list = file.listFiles();
for (File file1 : list) {
if (file1.isFile())
sb.append("<a href=\"logFile?filename=" + file1.getName() + "\" target=\"_blank\">" + file1.getName() + "</a><br/>");
}
htmlSuffix(sb);
return sb.toString();
}
return null;
}
@RequestMapping("/loggerFile")
@ResponseBody
public String queryLoggerFile(String dir,String filename) {
if(checkUser()){
if(dir!=null && filename !=null) {
String path = userdir + "/" + dir + "/" + filename;
outFile(path);
}
}return null;
}
/**
* 查询 logger插件生成的目录
* @return
*/
@RequestMapping("/logger")
@ResponseBody
public String queryLogger(@RequestParam(required = false) String dir){
if(checkUser()) {
StringBuilder sb = new StringBuilder();
htmlPrefix(sb);
String path = userdir;
if(dir !=null){
path = path +"/"+dir;
}
File file = new File(path);
File[] list = file.listFiles();
for (File file1 : list) {
if(file1.isDirectory())
sb.append("<a href=\"logger?dir="+file1.getName()+"\">"+file1.getName()+"</a><br/>");
}
if(dir!=null) {
for (File file1 : list) {
if (file1.isFile())
sb.append("<a href=\"loggerFile?dir=" + dir + "&filename=" + file1.getName() + "\" target=\"_blank\">" + file1.getName() + "</a><br/>");
}
}
htmlSuffix(sb);
return sb.toString();
}
return null;
}
private void htmlPrefix(StringBuilder sb){
sb.append("<!DOCTYPE html>");
sb.append("<html lang=\"zh-CN\">");
sb.append("<head>");
sb.append("<meta charset=\"utf-8\">");
sb.append("<title>LOGGER</title>");
sb.append("</head>");
sb.append("<body>");
}
private void htmlSuffix(StringBuilder sb){
sb.append("</body>");
sb.append("</html>");
}
/**
* 验证
* @return
*/
private boolean checkUser(){
if(username!=null && password !=null){
if(username.equals("user") && password.equals("password")){
return true;
}
}
return false;
}
/**
* 输出文字
*
* @param response
* @param s
*/
private static void responseOut(HttpServletResponse response, String s) {
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
try (
PrintWriter pw = response.getWriter()
) {
pw.write(s);
} catch (IOException e) {
e.printStackTrace();
}
}
}