Tipo di puzzle qui.Come definire le variabili negli xml di primavera da utilizzare in log4j.properties
Ho un'applicazione in WAR. Ci sono web.xml e application context.xml lì, e anche log4j.properties. Questa WAR funziona in tomcat.
Esiste la possibilità di utilizzare alcune variabili in log4j.properties, ad es. log4j.appender.file.File=${catalina.base}/logs/app.log
Voglio definire una variabile in web.xml o context.xml e usarla in log4j.properties. Ad esempio, in qualche modo impostare version=1.1
e utilizzare log4j.appender.file.File=${catalina.base}/logs/app-${version}.log
. Non dovrebbe essere una variabile di ambiente.
Posso farlo senza ricompilare l'app?
ADD non dovrebbe pregiudicare nulla, ma solo nel caso in cui ...
sua web.xml si presenta così:
<?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>
No, non è così. Almeno in tomcat-7.0.52 non fornisce messaggi di errore/avviso, ma crea 'logs/app-.log' invece di' logs/app-1.1 previsti.log' quando 'logs/app - $ {version} .log' specificato. –
hai provato a impostare una proprietà da xml e ad accedervi dal file delle proprietà? – javabot
sopra ha funzionato per me quando ho controllato. – javabot