如果你使用 Spring,你可以:
1) 创建一个 log4j 配置文件,例如“/WEB-INF/classes/log4j-myapp.properties”
不要将其命名为“log4j.properties”
例子:
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
稍后我们将在第 (3) 点定义“myWebapp-instance-root”
2) 在 web.xml 中指定配置位置:
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j-myapp.properties</param-value>
</context-param>
3) 为您的 webapp 的根指定一个唯一变量名,例如"myWebapp-instance-root"
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>myWebapp-instance-root</param-value>
</context-param>
4) 添加一个 Log4jConfigListener:
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
如果您选择不同的名称,请记得在 log4j-myapp.properties 中也进行更改。
请参阅我的文章(仅意大利语...但应该可以理解):
http://www.megadix.it/content/configurare-path-relativi-log4j-utilizzando-spring
更新 (2009/08/01)
我已将我的文章翻译成英文:
http://www.megadix.it/node/136