0

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

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

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

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

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

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

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

4

2 回答 2

1

我不认为 Log4J 本身就可以做到这一点。我记得 Spring Web 框架附带了一个通过 web.xml 配置的侦听器,它可能会做一些类似的事情。如果您真的想要,我认为您可以获取该代码并使用它来创建您想要的东西。

于 2012-07-31T20:13:36.170 回答
0

我最近一直在使用的一种对日志进行极细粒度控制的方法是 log4 appender。这比编辑配置文件要多一点工作,但给你带来了难以置信的灵活性。有关如何配置其中之一的快速示例,请参见我的答案。

于 2012-08-01T11:59:09.523 回答