我有一个配置文件,其中列出了Logback.xml的所有配置详细信息,例如日志文件位置和日志级别等。我将此文件放在weblogic域目录下的资源中。我的项目中还有一个属性文件,它应该指向配置文件。这样的事情。
iam.config.file=resources/iam_config.properties
我的logback.xml看起来像这个
<configuration>
<property file="${iam.config.file}"/>
<appender name="iamLogFileAppender" class="ch.qos.logback.core.FileAppender">
<!-- Tests run on modern PCs show that buffering related property -->
<!-- "ImmediateFlush" has negligible impact and will be ignored. -->
<File>${iam.upm.log.file}</File>
<Append>false</Append>
<encoder>
<pattern>[%d] %-5p %c - %m%n</pattern>
</encoder>
</appender>
<root level="ERROR">
<appender-ref ref="iamLogFileAppender"/>
</root>
<logger name="aero.sita.voyager.iam" level="${iam.upm.log.logLevel}" additivity="false">
<appender-ref ref="iamLogFileAppender" />
</logger>
</configuration>
所以我的想法是更改日志配置而无需重新部署。但由于weblogic在部署项目时无法找到该文件,因此我无法正常工作。我怎样才能改变
iam.config.file=resources/iam_config.properties
正确指向该文件。感谢。
答案 0 :(得分:1)
您可以使用通用文件覆盖功能来打包应用程序外部的属性 http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/config.htm#i1066493 使用应用程序安装目录打包应用程序时 http://download.oracle.com/docs/cd/E21764_01/web.1111/e13702/deployunits.htm#i1047223
请注意,这需要您使用ContextClassLoader查找此类属性,如果您希望在不重新部署的情况下读取文件,则可能必须在部署期间使用无阶段或外部阶段模式而不是分阶段:< / p>
Properties myAppProps = new Properties();
InputStream iostream = Thread.currentThread().getContextClassLoader().getResourceAsStream("myCfg/myApp.properties");
myAppProps.load(iostream);