2012-08-16 71 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