2013-08-22 4 views
5

私はlog4jを使用してデータをログに記録しています。私は、ログファイルをブラウザ上でリアルタイムで私のWeb-appと一緒に見ることができるようにしたいと思っています。チェーンソーのようなスタンドアロンのツールもありますが、ブラウザで目的のログをリアルタイムで表示することはできません。web-appsのtomcatログをブラウザにリアルタイムで表示する方法はありますか?

誰でも私にこれを手伝ってもらえますか?

+1

タイムアウトを使用するJavaScriptを使用してページを作成し、AJAXを介してサーブレットを呼び出すことができますログを返す)、その内容をdiv/textareaに表示する。より進化したサーブレットはログから新しいコンテンツのみを返します – JScoobyCed

+0

解決策はありましたか? –

答えて

8

簡単な例は次のようになります。

サーブレット(必要に応じてログファイルの変更パス):

@WebServlet(name = "Log", urlPatterns = { "/log" }) 
public class LogServlet extends HttpServlet { 
    private static final long serialVersionUID = 7503953988166684851L; 

    public LogServlet() { 
    super(); 
    } 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
     throws ServletException, IOException { 
    Path path = FileSystems.getDefault() 
      .getPath("/path/to/tomcat/logs", "catalina.out"); 
    StringBuilder logContent = new StringBuilder(); 
    logContent.append("<pre>"); 
    try (BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8);) { 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      logContent.append(line).append("<br/>"); 
     } 
    } catch (IOException x) { 
     // Take care of that 
    } 
    logContent.append("</pre>"); 
    resp.getWriter().print(logContent.toString()); 
    } 

    @Override 
    public void init(ServletConfig servletConfig) throws ServletException { 
    super.init(servletConfig); 
    } 
} 

HTMLページ:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>Log viewer</title> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
    <script>window.jQuery || document.write(unescape('%3Cscript src="http://jquery.com/jquery-wp-content/themes/jquery/js/jquery-1.10.2.min.js"%3E%3C/script%3E')) 
    </script> 
    <script type="text/javascript"> 
    var logging = false; 
    function refreshLog() { 
    if (logging) { 
    $.get('/log', function(data) { 
     $('#log').html(data); 
    }); 
    } 
    if (logging) { 
     setTimeout(function() { 
     refreshLog() 
     }, 5000); 
    } 
    } 

    function toggleLogs() { 
    if (logging) { 
    logging = false; 
    $("#tog").val("Start"); 
    } else { 
    logging = true; 
    $("#tog").val("Stop"); 
    refreshLog(); 
    } 
    } 
    </script> 
</head> 
<body style="width: 100%; padding: 0; margin: 0"> 
    <input type="button" id="tog" onclick="toggleLogs()" value="Start" /> 
    <div id="log" style="width: 100%; padding: 0; margin: 0"></div> 
</body> 
</html> 
+0

ご返信ありがとうございます。実際には、あなたが提案したものの代わりにGUIユーティリティが必要です。 [logdigger](http://logdigger.com/logdigger-connector)のようなもの。私は自分でHTMLを作成したくありません。私は私のためにそれをするユーティリティが必要です。 – ProgrammingPanda

+0

@ProgrammingPanda最後に統合されたソリューションを投稿してください..同じものを見てください.. – user2572801

0

あなたはpsi-probeを使用することができます。リアルタイムでログにアクセスしたり、ログレベルを変更したり、ダウンロードなどを行う機能が組み込まれています。

関連する問題