我希望能够根据我部署我的Java Web应用程序的服务器在不同的级别进行登录。例如,在我的测试服务器上,我想登录DEBUG级别,在我的生产服务器上,我想登录WARN级别。目前我的log4.xml文件位于我的WAR文件中。我希望能够使用Tomcat上下文参数来配置我的Web应用程序的日志记录级别。这可能吗?我可以使用Tomcat上下文参数配置Log4j吗?
我已经看到可以使用环境变量和系统属性。例如,获得解释$ {catalina.home}。这个功能是否可用于替换Tomcat上下文参数值?
例如,这将是的log4j.xml片段:
<level value="${log.level}"
凡log.level在%TOMCAT_HOME%/ CONF/context.xml中定义:
<Parameter name="log.level" value="DEBUG" />
我已经尝试了以上,它似乎并没有工作。 Google没有为我在log4j配置文件中使用上下文参数提供任何帮助。我发现this SO question使用系统属性做类似的事情,但它不使用Tomcat的上下文参数,所以它不是我想要的。在log4j配置中是否可以使用上下文参数值替换功能?我是否需要探索其他选项,例如使用外部log4j.xml文件?
我们最终使用外部日志配置文件使用[Log4jWebConfigurer](http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/util/Log4jWebConfigurer.html )和log4jConfigLocation属性的文件值,如file:/path/to/log4j.xml。后来我们决定切换到Logback,我们使用了Spring Extension for Logback,它有一个类似的属性叫做logbackConfigLocation。这使我们可以为我们部署的不同环境使用不同的配置文件。 – BennyMcBenBen 2012-09-28 02:39:47