2013-08-22 8 views
5

Sto utilizzando log4j per registrare i miei dati. Voglio poter visualizzare i file di registro in tempo reale insieme alla mia app Web in un browser. Ci sono strumenti autonomi come Chainsaw che sono abbastanza buoni, ma non servono per la visualizzazione di log in tempo reale in un browser.C'è un modo per visualizzare i miei registri di tomcat di applicazioni Web in un browser in tempo reale?

Qualcuno può aiutarmi con questo?

+1

È possibile creare una pagina con qualche javascript che utilizza un timeout e chiamare tramite AJAX un servlet (che leggerebbe e restituire il registro) e visualizzare il contenuto in una div/textarea. Un servlet più evoluto restituirebbe solo il nuovo contenuto dal registro – JScoobyCed

+0

hai trovato qualche soluzione? Plz dimmi che voglio anche lo stesso. –

risposta

8

Un semplice esempio potrebbe essere:

Servlet (cambio percorso del file di log, se necessario): pagina

@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

Grazie per la risposta. In realtà ho bisogno di una utility GUI invece di quello che hai proposto. Qualcosa come [logdigger] (http://logdigger.com/logdigger-connector). Non voglio creare un html da solo. Ho bisogno di un'utilità per farlo per me. – ProgrammingPanda

+0

@ProgrammingPanda, per favore, posta la soluzione che finalmente hai integrato .. guardando allo stesso .. – user2572801

0

È possibile utilizzare psi-probe. Ha una funzionalità integrata per accedere ai registri in tempo reale, modificare il livello di registro, scaricare, ecc ...

Problemi correlati