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

时间:2012-07-31 18:39:52

标签: java log4j tomcat6

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

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

例如,这将是log4j.xml片段:

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

在%TOMCAT_HOME%/ conf / context.xml中定义 log.level

<Parameter name="log.level" value="DEBUG" />

我已尝试过上述内容但似乎无法正常工作。谷歌没有为我提供任何与在log4j配置文件中使用上下文参数相关的内容。我发现this SO question使用系统属性做了类似的事情,但它没有使用Tomcat上下文参数,所以它不是我想要的。 log4j配置中是否提供了上下文参数值替换功能?我是否需要探索其他选项,例如使用外部log4j.xml文件?

2 个答案:

答案 0 :(得分:1)

我不认为Log4J是原生的。我记得Spring Web Framework带有一个通过web.xml配置的监听器,可能会做一些类似的事情。如果你真的想,我想你可以抓住它的代码并用它来创造一些你想要的东西。

答案 1 :(得分:0)

我最近使用的一种方法是对日志记录进行极细粒度控制,即log4 appender。这比编辑配置文件要多一些,但会给你带来难以置信的灵活性。请参阅我的回答here,以获取有关如何配置其中一个的快速示例。