2012-08-16 76 views

回答

0

所以..只打印这似乎调用脚本我做了这样的代码后行:

BufferedReader reader = new BufferedReader(new FileReader("/path/to/server/log/server.log")); 
int lines = 0; 
while (reader.readLine() != null) { 
    lines++; 
} 

reader.close(); 

BufferedReader reader2 = new BufferedReader(new FileReader("/path/to/server/log/server.log")); 
String strLine; 
int i = 0; 
while (i != lines) { 
    reader2.readLine(); 
    i++; 

} 
while ((strLine = reader2.readLine()) != null) { 
    out.println(stringToHTMLString(strLine)); 
    out.println("<br>"); 
} 

reader2.close(); 

当servlet的开始它计算在服务器日志行(将其保存在变量i),然后点击动作表单后,它会读取索引高于i的行并将其显示在html页面上。我用函数stringToHTMLString,我发现在stackoverflow上的某处。

迎接。

1

这里是一个工作的例子,只是暴露此作为一个servlet

public class ReadLogs extends HttpServlet { 

    private static final String CONTENT_TYPE = "text/html; charset=UTF-8"; 

    public void init(ServletConfig config) throws ServletException { 
     super.init(config); 
    } 

    public void service(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, 
      IOException { 
     response.setContentType(CONTENT_TYPE); 
     PrintWriter out = response.getWriter(); 
     out.append("<html>\n<head>\n\n"); 
     out.append("<script>function toBottom()" + "{" 
       + "window.scrollTo(0, document.body.scrollHeight);" + "}"); 
     out.append("\n</script>"); 
     out.append("\n</head>\n<body onload=\"toBottom();\">\n<pre>\n"); 
     try { 
      File file = new File("C:\\pathToServerLogFile"); 
      BufferedReader in = new BufferedReader(new FileReader(file)); 
      StringBuilder sb = new StringBuilder(); 
      while (in.ready()) { 
       String x = in.readLine(); 
       sb.append(x).append("<br/>"); 
      } 
      in.close(); 
      out.append("\n</pre>\n</body>\n</html>"); 
      out.close(); 
     } catch (FileNotFoundException fnfe) { 
      fnfe.printStackTrace(); 
     } catch (IOException ioe) { 
      ioe.printStackTrace(); 
     } 
    } 
} 

UPDATE

如果需要只打印文件使用的最后一部分这一行后“in.close ();”

 //print only 1MB Oof data 
     if(sb.length()>1000000){ 
     out.append(sb.substring(sb.length()-1000000, sb.length())); 
     }else{ 
     out.append(sb.toString()); 
     } 
+0

谢谢。我在我的主要java文件中粘贴了这段代码,然后在doPost方法的末尾,我写了 ReadLogs read = new ReadLogs(); read.service(request,response); 但是在jsp/servlet页面没有新的输出。第二件事是我不想打印整个.log文件,因为它会打印多天来的所有信息,而我只想从调用servlet的momemnt获取信息。映入眼帘。 – user15683854875644328975643872 2012-08-17 09:53:00

+0

把它部署为Servlet – MaVRoSCy 2012-08-17 16:08:04

+0

好吗?你做到了吗? – MaVRoSCy 2012-08-22 21:08:26