通过外部属性文件在运行时更改日志记录级别

时间:2015-06-22 09:49:55

标签: java logback weblogic12c

我想在不重新启动服务器的情况下更改日志级别。我使用weblogic服务器。为此,我想从外部文件(LOGBackIncludedFile.xml)传递日志级别,并在logback <include file>中提供此文件路径。 我无法对路径进行硬编码,因为DevUATProduction中的路径不同。我想将此文件包含在Weblogic 12C服务器内的位置。所以我可以在不触及ear文件的情况下更改日志级别。

<configuration  scan="true"  scanPeriod="30 seconds">

   <include file="../../LOGBackIncludedFile.xml" />
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender" >
       <encoder>
         <pattern>%date %-5level [%logger] > %msg%n</pattern>
       </encoder>
  </appender>

  <root level="${root.level:-DEBUG}">          
    <appender-ref ref="STDOUT" />
  </root>  
</configuration>

以下是LOGBackIncludedFile.xml

<included>
  <property value="INFO" name="root.level"/>
</included>

当我使用这个现有的xml时,我收到了这个错误。

 java.io.FileNotFoundException: /usrXX/appXX/oracle/product/XXX/domains/XXXDomain/../../LOGBackIncludedFile.xml 

我的问题是如何在logback.xml中动态设置外部文件路径。路径应该是特定的weblogic instance。当我将外部文件放入我的实例时。

例如:/usrxx/appxx/oracle/product/XXX/domains/xxxDomain/servers/myInstance/

1 个答案:

答案 0 :(得分:1)

设置文件路径如下。这适用于weblogic 12C。

 <include optional="true" file="${DOMAIN_HOME}/servers/${SERVER_NAME}/LOGBackIncludedFile.xml" />