2016-05-20 6 views
1

Ich habe derzeit die Situation, wo ich 1) externe log4j.properties 2) die Position der log4j.properties ist in web.xml als Eigenschaft Platzhalter konfiguriert Der Wert der Eigenschaft wird vom POM gelesen. 3) der Platzhalter wird zur Erstellungszeit gefüllt, d. H. Wenn .war erstellt wirdMaven Filterung web.xml für Tomcat eingebettet in Eclipse

So weit, so gut - die App lokalisiert das log4j an der im POM angegebenen Stelle und erzeugt Protokolldateien. Dies funktioniert jedoch nur, wenn die App als WAR für eine eigenständige Tomcat-Instanz bereitgestellt wurde. Die nächste Anforderung besteht darin, sie in Tomcat implementieren zu können, das in Eclipse eingebettet ist, ein Schritt, der Maven, soweit ich weiß, nicht betrifft. Gibt es eine Möglichkeit, die web.xml dazu zu zwingen, dass ihre Eigenschaftenplatzhalter bei der Bereitstellung in einer eingebetteten Tomcat-Instanz gefüllt werden?

Vielen Dank im Voraus

Angus

+0

Haben Sie eine Lösung dafür gefunden? – watery

Antwort

0

ja, habe ich mit einer Lösung am Ende kommen. Fügen Sie die config unter:

web.xml

<listener> 
    <listener-class>org.springframework.web.util.Log4jConfigListener 
    </listener-class> 
</listener> 

<context-param> 
    <param-name>log4jConfigLocation</param-name> 
    <param-value>${log4j.properties.location}</param-value> 
</context-param> 

<context-param> 
    <param-name>log4jExposeWebAppRoot</param-name> 
    <param-value>false</param-value> 
</context-param> 

<context-param> 
    <param-name>log4jRefreshInterval</param-name> 
    <param-value>60000</param-value> 
</context-param> 

context.xml:

<Parameter name="log4j.properties.location" value="file:/usr/local/etc/xxxxxxxxx/xxxxxxxxxxxxx/log4j.properties"/> 

Und Sie sollten gut zu gehen.

Verwandte Themen