2013-08-22 5 views
5

Używam log4j do rejestrowania moich danych. Chcę mieć możliwość przeglądania plików dziennika w czasie rzeczywistym obok mojej aplikacji internetowej w przeglądarce. Istnieją samodzielne narzędzia, takie jak Chainsaw, które są całkiem dobre, ale nie służą do przeglądania dzienników przeglądania w czasie rzeczywistym w przeglądarce.Czy istnieje sposób, aby wyświetlić dzienniki tomcat aplikacji internetowych w przeglądarce w czasie rzeczywistym?

Czy ktoś może mi w tym pomóc?

+1

Można utworzyć stronę z niektórymi javascriptami, które wykorzystują timeout i wywołują AJAX serwlet (który będzie czytał i zwróć log) i wyświetlenie zawartości w div/textarea. Bardziej ewoluowany serwlet zwróciłby tylko nową zawartość z dziennika – JScoobyCed

+0

czy otrzymałeś jakieś rozwiązanie? Plz powiedz mi, że ja też chcę tego samego. –

Odpowiedz

8

Prostym przykładem może być:

Servlet (ścieżka zmiana pliku dziennika w razie potrzeby): strona

@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

Dziękuję za odpowiedź. W rzeczywistości potrzebuję narzędzia GUI zamiast tego, co zaproponowałeś. Coś w rodzaju [logdigger] (http://logdigger.com/logdigger-connector). Nie chcę samodzielnie tworzyć html. Potrzebuję narzędzia, aby to dla mnie zrobić. – ProgrammingPanda

+0

@ProgrammingPanda proszę po rozwiązaniu w końcu zintegrowane .. widok na to samo .. – user2572801

0

Można użyć psi-probe. Ma wbudowaną funkcję dostępu do dzienników w czasie rzeczywistym, zmiany poziomu rejestru, pobierania itd ...