Der leichtgewichtige Webserver Jetty gibt die folgenden zwei Protokolldateien aus.
Standardmäßig werden diese Protokolldateien in "Protokolle" direkt unter dem durch die Eigenschaft "jetty.base" angegebenen Verzeichnis ausgegeben.
Jetty-Referenz Standardprotokollierung mit StdErrLog von Jetty und [Konfigurieren von Jetty-Anforderungsprotokollen](https: // www) Ich habe auf .eclipse.org / jetty / documentation / current / configuring-jetty-request-logs.html verwiesen, aber es war schwierig zu verstehen, wie das Ausgabeziel in ein beliebiges Verzeichnis geändert werden kann. Deshalb habe ich es in diesem Artikel zusammengefasst.
Die Einstellungen für die Protokolldatei werden aus "etc / jetty-logging.xml" vorgenommen.
jetty-logging.xml
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<!-- =============================================================== -->
<!-- Configure stderr and stdout to a Jetty rollover log file -->
<!-- this configuration file should be used in combination with -->
<!-- other configuration files. e.g. -->
<!-- java -jar start.jar etc/jetty-logging.xml -->
<!-- =============================================================== -->
<Configure id="logging" class="org.eclipse.jetty.util.log.Log">
<New id="ServerLog" class="java.io.PrintStream">
<Arg>
<New class="org.eclipse.jetty.util.RolloverFileOutputStream">
<Arg><Property name="jetty.logs" default="./logs"/>/yyyy_mm_dd.stderrout.log</Arg>
<Arg type="boolean">false</Arg>
<Arg type="int">90</Arg>
<Arg><Call class="java.util.TimeZone" name="getTimeZone"><Arg>GMT</Arg></Call></Arg>
<Get id="ServerLogName" name="datedFilename"/>
</New>
</Arg>
</New>
<Get name="rootLogger">
<Call name="info"><Arg>Redirecting stderr/stdout to <Ref refid="ServerLogName"/></Arg></Call>
</Get>
<Call class="java.lang.System" name="setErr"><Arg><Ref refid="ServerLog"/></Arg></Call>
<Call class="java.lang.System" name="setOut"><Arg><Ref refid="ServerLog"/></Arg></Call>
</Configure>
<Arg><Property name="jetty.logs" default="./logs"/>/yyyy_mm_dd.stderrout.log</Arg>
Es wird jetzt als yyyy_mm_dd.stderrout.log
direkt unter dem durch die Eigenschaft jetty.logs
angegebenen Verzeichnis ausgegeben ($ pwd / logs, wenn keine Eigenschaft vorhanden ist).
Um dieses Problem zu umgehen, geben Sie den Wert "LOG_DIR = / test / logs" in der Systemeigenschaft des Jetty-Startbefehls an und verweisen Sie auf "LOG_DIR" in "jetty-logging.xml", damit das Protokoll in ein beliebiges Verzeichnis ausgegeben werden kann. Wird sein.
$ java -DLOG_DIR=/test/logs -jar start.jar
<Arg><Property name="LOG_DIR"/>/yyyy_mm_dd.stderrout.log</Arg>
In diesem Beispiel wird das Standardausgabe- / Standardfehlerausgabeprotokoll an / test / logs / yyyy_mm_dd.stderrout.log
ausgegeben.
Die Einstellungen für die Protokolldatei werden aus "etc / jetty-requestlog.xml" vorgenommen.
jetty-requestlog.xml
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<!-- =============================================================== -->
<!-- Configure the Jetty Request Log -->
<!-- =============================================================== -->
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<!-- =========================================================== -->
<!-- Configure Request Log -->
<!-- =========================================================== -->
<Ref refid="Handlers">
<Call name="addHandler">
<Arg>
<New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler">
<Set name="requestLog">
<New id="RequestLogImpl" class="org.eclipse.jetty.server.AsyncNCSARequestLog">
<Set name="filename"><Property name="jetty.base" default="." /><Property name="requestlog.filename" default="/logs/yyyy_mm_dd.request.log"/></Set>
<Set name="filenameDateFormat"><Property name="requestlog.filenameDateFormat" default="yyyy_MM_dd"/></Set>
<Set name="retainDays"><Property name="requestlog.retain" default="90"/></Set>
<Set name="append"><Property name="requestlog.append" default="false"/></Set>
<Set name="extended"><Property name="requestlog.extended" default="false"/></Set>
<Set name="logCookies"><Property name="requestlog.cookies" default="false"/></Set>
<Set name="LogTimeZone"><Property name="requestlog.timezone" default="GMT"/></Set>
</New>
</Set>
</New>
</Arg>
</Call>
</Ref>
</Configure>
<Set name="filename"><Property name="jetty.base" default="." /><Property name="requestlog.filename" default="/logs/yyyy_mm_dd.request.log"/></Set>
Es wird jetzt als / logs / yyyy_mm_dd.request.log
direkt unter dem durch die Eigenschaft jetty.base
angegebenen Verzeichnis ausgegeben ($ pwd, wenn keine Eigenschaft vorhanden ist).
Im Gegensatz zum Standardausgabe- / Standardfehlerausgabeprotokoll gibt das Zugriffsprotokoll das Ausgabezielverzeichnis und den Namen der Ausgabedatei einzeln an. Beachten Sie, dass der Name der Ausgabedatei standardmäßig die Verzeichnisspezifikation "logs" enthält.
Um dieses Problem zu umgehen, geben Sie den Wert "LOG_DIR = / test / logs" in der Systemeigenschaft des Jetty-Startbefehls an und verweisen Sie auf "LOG_DIR" in "jetty-requestlog.xml" wie im Standardausgabe- / Standardfehlerausgabeprotokoll. Dies ermöglicht die Ausgabe des Protokolls in ein beliebiges Verzeichnis.
$ java -DLOG_DIR=/test/logs -jar start.jar
<Set name="filename"><Property name="LOG_DIR"/><Property name="requestlog.filename" default="/yyyy_mm_dd.request.log"/></Set>
Aus dem Ausgabedateinamen der Eigenschaft "requestlog.filename" wird die Angabe des Verzeichnisses "logs" entfernt und nur der Dateiname verwendet.
In diesem Beispiel wird das Zugriffsprotokoll an "/ test / logs / yyyy_mm_dd.request.log" ausgegeben.
Recommended Posts