Rodzaj zagadki tutaj.Jak zdefiniować zmienne w xmls wiosennych do użycia w log4j.properties
Mam aplikację w WAR. Dostępne są pliki web.xml i application.xml, a także plik log4j.properties. Ta wojna działa w tomcat.
Istnieje możliwość użycia niektórych zmiennych w pliku log4j.properties, np. log4j.appender.file.File=${catalina.base}/logs/app.log
Chcę zdefiniować zmienną w pliku web.xml lub context.xml i użyć jej w pliku log4j.properties. Na przykład w jakiś sposób ustaw version=1.1
i użyj log4j.appender.file.File=${catalina.base}/logs/app-${version}.log
. Nie powinna to być zmienna środowiskowa.
Czy mogę to zrobić bez ponownej kompilacji aplikacji?
DODAJ nie powinno mieć wpływu na cokolwiek, ale na wszelki wypadek ...
Jego web.xml wygląda następująco:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee">
<!-- Spring -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:context.xml</param-value>
</context-param>
<!-- log4j -->
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>10000</param-value>
</context-param>
<context-param>
<param-name>log4jExposeWebAppRoot</param-name>
<param-value>false</param-value>
</context-param>
...
</web-app>
Nie, nie ma. Przynajmniej w tomcat-7.0.52 nie wyświetla żadnych komunikatów o błędach/ostrzeżeniach, ale tworzy 'logs/app-.log' zamiast oczekiwanych' logs/app-1.1.log' po określeniu opcji 'logs/app - $ {version} .log'. –
Czy próbowałeś ustawić właściwość z xml i dostęp do niego z pliku właściwości? – javabot
powyższe pracował dla mnie, gdy sprawdziłem. – javabot