我有一个Java EE 5的Web应用程序,我作为一个EAR文件部署到WebSphere 7。
我希望我的log4j的配置是外部EAR文件,以便在需要时,无需重建和重新部署EAR文件,我可以调整日志的内容。
我的理解是,我可以通过设置“系统变量”之称log4j.configuration指定我log4j.properties文件的位置。 (实施例log4j.configuration = C:/log4j.properties)
我的问题是,我该如何设置在WebSphere 7管理控制台该系统变量?
我四处浏览看有Environment > WebSphere Variables
,但看起来不正确的,因为这将设置变量为整个服务器。 我猜我想设置一个系统变量只是我的应用程序EAR文件。
任何帮助或建议,非常感谢!
抢
该log4j.configuration
属性是Java虚拟机的系统属性。 你可以将它添加到通用JVM参数应用服务器的列表的末尾加载这个属性。 这是在WebSphere控制台通过以下导航完成:
Servers > Application servers > [app server name] > Process definition > Java Virtual Machine
在通用JVM参数,添加以下内容:
-Dlog4j.configuration=file:C:/log4j.properties
点击Apply
,在此页面的底部,并保存更改。 这将要求应用程序服务器重新启动才能生效。
您还可以使用共享库的应用程序,并把你的log4j.xml那里。
我找到一个解决方案分配给每个EAR或WAR外部的log4j.xml配置文件:
- 我从提取EAR我们的的log4j.xml,这有拉链孤独XML到一个JAR文件。 把它放在服务器上的路径由WebSphere访问,
- 创建一个共享库(的WebSphere>环境>共享库)映射到类路径此存档。 请确保选择“将独立的类加载器为这个共享库”或者你必须为你的应用程序的每个模块分配的参考,而不是仅仅父EAR。
- 我们EAR内分配的参考(应用程序 - > ApplicationType - > WebSphere企业应用程序 - > EAR名 - >共享库引用 - >选择你的耳朵 - >参考共享库 - >选择的Log4j配置JAR)和添加。
- 重新启动应用程序
我用这种方式来指定特定的外部的log4j配置文件,以每WAR在一个EAR。 在这里你可以找到原来的解决方案。