2012-07-31 98 views
0

我希望能够根据我部署我的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文件?

回答

1

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

+0

我们最终使用外部日志配置文件使用[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

0

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

相关问题