Tomcat log per Servlet auslesen?

derChris

Grünschnabel
Hallo,

ich möchte über ein Servlet die Tomcat LOG-Datei auslesen (catalina.log)...

nur, wie ist der correcte Pfad?

Ich habe folgendes versucht, aber es geht nicht... Vielleicht kann mir jemand eine Lösung geben?

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
FileReader fr = new FileReader(getServletContext().
getRealPath("/var/log/tomcat5/catalina.log"));
BufferedReader bro = new BufferedReader( fr );

// declare String variable and prime the read
String stringRead = bro.readLine( );

while( stringRead != null ) // end of the file
{
System.out.println(stringRead );
stringRead = bro.readLine( ); // read next line
}

bro.close( );

}
 
getRealPath(string); übersetzt dir einen (virtuellen) Web-Path in einen "echten" Filesystem-Pfad (daher der Name ;) ) -- /var/log/tomcat5/catalina5 ist allerdings schon ein echter Filesystem-Path -- sollte also direkt als Parameter im new stehen:

FileReader fr = new FileReader("/var/log/tomcat5/catalina.log");
 
Lösung ist... (mit letzten Zeilen auslesen):

PHP:
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		File f = new File("/var/log/tomcat5/catalina.log");
		RandomAccessFile raf = new RandomAccessFile(f, "r");
		String output="V1.2\n---\n";
		long fileLength = raf.length();
		if(fileLength > 15000){
			raf.seek(fileLength - 15000);
			}
		String act;
		while((act = raf.readLine())!= null)
			output += act+"\n";
		
		out.print(output);
...


Danke,

Chris
 

Neue Beiträge

Zurück