Apache Tomcat中的每个应用程序系统属性

时间:2011-03-08 13:37:56

标签: tomcat log4j

我目前需要为同一个Tomcat实例上部署的不同Web应用程序指定不同的log4j.configuration属性。

在Tomcat中是否可以基于每个应用程序指定系统属性?

1 个答案:

答案 0 :(得分:1)

你问两个不同的问题(好吧,至少从Tomcat 7开始,你要问两个不同的问题)。

Log4j2具有Web应用程序感知功能,因此可以在每个Web应用程序中进行不同的配置。

虽然您不能为每个Web应用程序提供不同的系统属性(因为就其性质而言,系统意味着全局),您可以为每个Web应用程序提供不同的程序员可访问属性,而不是系统属性。

将Tomcat 7配置为符合Servlet 3.0规范,您可以创建自己的ServletContainerInitializer,将该初始化程序配置为首先在所有其他初始化程序之前进行初始化,然后在该初始化程序中,您可以从文件中读取设置, DB或其他任何东西,并将它们“停放”在ServletContext的属性集合中。通常,初始化程序会检查正在运行的系统,并根据发现的内容设置属性。从文件中读取它们没什么意义,因为您可以将它们放在web.xml中。然后,您的Web应用程序中的代码可以将设置从Web应用程序的ServletContext属性集合的唯一实例中提取出来。这允许对每个Web应用程序或同一Web应用程序的每个实例进行唯一配置。