Si vous utilisez Spring, vous pouvez :
1) créez un fichier de configuration de log4j, par exemple "/WEB-INF/classes/log4j-myapp.properties". NE PAS le nommer "log4j.properties".
Exemple :
log4j.rootLogger=ERROR, stdout, rollingFile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.File=${myWebapp-instance-root}/WEB-INF/logs/application.log
log4j.appender.rollingFile.MaxFileSize=512KB
log4j.appender.rollingFile.MaxBackupIndex=10
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.rollingFile.Encoding=UTF-8
Nous définirons "myWebapp-instance-Root" plus tard au point (3)
2) Spécifiez l'emplacement de la configuration dans le fichier web.xml :
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j-myapp.properties</param-value>
</context-param>
3) Spécifier un unique Nom de variable pour le Root de votre webapp, par exemple "myWebapp-instance-Root".
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>myWebapp-instance-root</param-value>
</context-param>
4) Ajoutez un Log4jConfigListener :
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
Si vous choisissez un nom différent, n'oubliez pas de le modifier également dans log4j-myapp.properties.
Voir mon article (en italien seulement... mais cela devrait être compréhensible) : http://www.megadix.it/content/configurare-path-relativi-log4j-utilizzando-spring
MISE À JOUR (2009/08/01) J'ai traduit mon article en anglais : http://www.megadix.it/node/136