Java 我可以使用Tomcat上下文参数配置Log4j吗?

Java 我可以使用Tomcat上下文参数配置Log4j吗?,java,log4j,tomcat6,Java,Log4j,Tomcat6,我希望能够根据部署Java web应用程序的服务器的不同级别进行日志记录。例如,在我的测试服务器上,我希望以调试级别登录,在我的生产服务器上,我希望以警告级别登录。目前,我的log4.xml文件位于WAR文件中。我希望能够使用Tomcat上下文参数配置web应用程序的日志记录级别。这可能吗 我已经看到可以使用环境变量和系统属性。例如,${catalina.home}被解释。在Tomcat上下文参数值中替换是否也可以使用相同的功能 例如,这将是log4j.xml代码段: <level val

我希望能够根据部署Java web应用程序的服务器的不同级别进行日志记录。例如,在我的测试服务器上,我希望以调试级别登录,在我的生产服务器上,我希望以警告级别登录。目前,我的log4.xml文件位于WAR文件中。我希望能够使用Tomcat上下文参数配置web应用程序的日志记录级别。这可能吗

我已经看到可以使用环境变量和系统属性。例如,${catalina.home}被解释。在Tomcat上下文参数值中替换是否也可以使用相同的功能

例如,这将是log4j.xml代码段:

<level value="${log.level}" 

我不认为Log4J是天生的。我记得SpringWeb框架附带了一个通过Web.xml配置的监听器,它可能会做一些类似的事情。如果你真的想,我想你可以获取代码,然后用它来创建你想要的东西。

我最近使用的一种方法是log4,它可以对日志进行非常细粒度的控制。这比编辑配置文件要多花一点功夫,但却给了您难以置信的灵活性。有关如何配置其中一个的快速示例,请参见我的答案。

我们最终使用了一个外部日志配置文件,并使用log4jConfigLocation属性和文件值,如file:/path/to/log4j.xml。后来,我们决定切换到Logback,并对Logback使用Spring扩展,它具有类似的属性logbackConfigLocation。这允许我们为部署到的不同环境使用不同的配置文件。
<Parameter name="log.level" value="DEBUG" />