2016-11-08 3 views
0

Ich habe Web-Service-Projekt und möchte den Stammpfad meines Projekts den Logger-Dateipfad im Zusammenhang mit dem Projektpfad zu definieren ... ich kenne diesen Teil des Codes und ich don Ich weiß nicht ob es funktioniert oder nicht ...?Logger-Pfad auf dem Server neben dem Projektpfad

public void contextInitialized(ServletContextEvent event) { 
    ServletContext context = event.getServletContext(); 
    System.setProperty("rootPath", context.getRealPath("../Logs/")); 
} 

dann der Logger Teil des Codes

log4j.appender.file.File=${rootPath}WEB-INF/logs/TecnichalLog.log log4j.appender.file.File=${rootPath}WEB-INF/logs/PerformanceLog.log

Anmerkung: Ich bin mit embeded Kater, so konnte ich nicht ${catalina.base} verwenden ...

danke

Antwort

0

Es ist besser, relative Pfade innerhalb des Projekts zu verwenden. Der Pfad wäre relativ zu dem Ordner, aus dem tomcat gestartet wurde. Normalerweise/bin /. Oder wenn Sie Ihre Laufzeitumgebung kennen und diese für alle Knoten konsistent ist, dann ist die Verwendung absoluter Pfade nicht falsch.

+0

Ich verwende Embedded Tomcat und auch das Projekt wird in viele verschiedene Umgebungen verschieben, deshalb würde ich den Pfad mit Kontext deklarieren ... –

+0

Ok, Die Eigenschaft rootPath ist nur während der Laufzeit verfügbar. So könnten Sie die log4j Appender danach programmatisch setzen. Sie können einen Konsolenappender bis zu diesem Zeitpunkt konfigurieren, damit Sie die Startprotokolle nicht verlieren. – jay

+0

Nein! Ich kann die Eigenschaft schreiben, wann immer ich will ** ** Aber das Problem ist, wird das Projekt von anderen Personen eingesetzt werden, die nur ohne Bearbeitung und XML-Datei bereitstellen werden oder und Eigenschaften, das einzige, was ich tun kann, ist, ihm zu sagen, dass die Projekt wird Log.file in der Nähe der Kriegsdatei erzeugen ... –

Verwandte Themen