2

我有一个配置文件,其中列出了 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

正确指向文件。谢谢。

4

1 回答 1

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 查找这样的属性,如果您希望在不重新部署的情况下读取文件,您可能必须在部署期间使用 no-stage 或 external stage 模式而不是 staged:

Properties myAppProps = new Properties();
InputStream iostream = Thread.currentThread().getContextClassLoader().getResourceAsStream("myCfg/myApp.properties");
myAppProps.load(iostream);
于 2011-07-20T22:48:00.523 回答