Чтение файла конфигурации из каталога домена weblogic - PullRequest
2 голосов
/ 20 июля 2011

У меня есть файл конфигурации, в котором перечислены все детали конфигурации для 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

чтобы правильно указать файл. Благодаря.

1 Ответ

1 голос
/ 21 июля 2011

Вы можете использовать функцию переопределения общих файлов, чтобы упаковывать свойства вне приложения. 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, и если вы хотите, чтобы файл читался без повторного развертывания, вам может потребоваться использовать бесступенчатый или внешний каскадный режим во время развертывания вместо поэтапного: 1006 *

Properties myAppProps = new Properties();
InputStream iostream = Thread.currentThread().getContextClassLoader().getResourceAsStream("myCfg/myApp.properties");
myAppProps.load(iostream);
...