2017-06-23 2 views
0

Ich arbeite mit Jetty embedded Server und baue eine REST-API aus einem Legacy-Jar, die eine Menge kritisch nützlicher Aufrufe von println hat (ich leite seine Klassen und es gibt Zeug in der Konsole aus). Ich versuche jetzt, diese printlns in einer Datei zusammen mit dem Anforderungsstatus zu haben, aber das NCSARequestLog loggt nur das Dateidatum und den Code der Antworten ein. Gibt es eine Möglichkeit, alles in einer Datei zu protokollieren? Ich bin mir ziemlich sicher, dass das möglich ist, weil wir zuvor das Legacy-Jar in eine in Glassfish implementierte War-Datei eingebunden haben und alle Prints im Server-Log angezeigt wurden.Kann Jetty System.out und System.err in einer Protokolldatei erfassen?

Dank

Antwort

0

Im jetty-util-<ver>.jar es eine Klasse RolloverFileOutputStream genannt ist, die eingestellt instanziiert werden kann und dann über die Rolle von System.out und System.err

Ein Beispiel dafür nehmen:

package demo; 

import java.io.File; 
import java.io.IOException; 
import java.io.PrintStream; 
import java.util.TimeZone; 

import org.eclipse.jetty.util.RolloverFileOutputStream; 

public class ConsoleCaptureDemo 
{ 
    public static void main(String[] args) throws IOException 
    { 
     File loggingDir = new File("logs"); 
     if (!loggingDir.exists()) 
     { 
      if (!loggingDir.mkdirs()) 
      { 
       throw new RuntimeException("Unable to create directory: " + loggingDir); 
      } 
     } 

     String loggingFile = new File(loggingDir, "yyyy_mm_dd.jetty.log").getAbsolutePath(); 
     boolean append = false; 
     int retainDays = 90; 
     TimeZone zone = TimeZone.getTimeZone("GMT"); 
     RolloverFileOutputStream logStream = new RolloverFileOutputStream(loggingFile, 
      append, retainDays, zone); 
     System.out.println("Look at " + logStream.getFilename()); 
     PrintStream logWriter = new PrintStream(logStream); 

     System.setOut(logWriter); 
     System.setErr(logWriter); 

     System.out.println("From System.out - hi there"); 
     System.err.println("From System.err - hello again"); 
    } 
} 
Verwandte Themen