2013-08-22 15 views
5

Verilerimi günlüğe kaydetmek için log4j kullanıyorum. Web tarayıcımla birlikte gerçek zamanlı olarak günlük dosyalarını bir tarayıcıda görüntüleyebildim. Zincirli testereler gibi oldukça iyi araçlar var, ancak tarayıcıda gerçek zamanlı olarak günlükleri görüntülemek için kullanmıyorlar.Web uygulamalarım tomcat günlüklerini bir tarayıcıda gerçek zamanlı olarak görmenin bir yolu var mı?

Bu konuda bana yardımcı olan var mı?

+1

Bir javascript içeren ve zaman aşımı kullanan ve sunucuya AJAX üzerinden çağrı yapan bir sayfa oluşturabilirsiniz (ve günlüğü döndürmek ve içeriği div/textarea olarak görüntülemek. Daha gelişmiş bir servlet yalnızca – JScoobyCed

+0

logundan yeni içerik döndürecek herhangi bir çözüm aldınız mı? Plz de aynı şeyi istiyorum. –

cevap

8

Basit bir örnek olacaktır:

Servlet (gerektiğinde günlük dosyasının değişimi yolu):

@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 sayfası:

<!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

Cevabınız için teşekkür ederiz. Aslında önerdiğiniz şey yerine bir GUI yardımcı programına ihtiyacım var. [Logdigger] gibi bir şey (http://logdigger.com/logdigger-connector). Kendi başıma bir html oluşturmak istemiyorum. Bunu benim için yapacak bir yardıma ihtiyacım var. – ProgrammingPanda

+0

@ProgrammingPanda, sonunda entegre ettiğiniz çözümü gönderin lütfen .. – user2572801

0

Sen psi-probe kullanabilirsiniz. Gerçek zamanlı olarak günlüklere erişmek için yerleşik bir işleve sahiptir, günlük seviyesini değiştirmek, indirmek, vb ...

İlgili konular