【问题标题】:How to specify file path Dynamically in logback.xml如何在 logback.xml 中动态指定文件路径
【发布时间】:2015-09-15 21:13:11
【问题描述】:

我是 Logback 的新手,我正在尝试使用属性文件为 Windows 和 Linux 动态添加文件路径。

这是我的代码sinppet,我怎样才能得到${MY_HOME}的值

<appender name="SERVER_FILE" class="ch.qos.logback.core.FileAppender">
    <file>${MY_HOME}/server.log</file>
    <append>true</append>
    <encoder>
      <pattern>%d [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender> 

【问题讨论】:

    标签: logback


    【解决方案1】:

    通常这是一个系统属性,有一些答案涉及到这一点,但只提供了一部分答案。它们是:

    但是configuration上的手册显示该机制相当灵活

    与许多脚本语言一样,logback 配置文件支持变量的定义和替换。变量可以在配置文件本身、外部文件、外部资源中定义,甚至可以动态计算和定义。

    总而言之,您有许多用于定义 MY_HOME 值的选项:

    在文件中

    您可以在文件本身中定义值:

    <property name="MY_HOME" value="/home/myhome"/>
    

    在系统属性中

    您可以安排将其设置为系统属性,很可能在您启动 JVM 时进行。

    java -DMY_HOME="/home/myhome" ...
    

    来自系统上的属性文件

    您可以安排 logback 读取属性文件:

    <property file="/opt/example/instance_1/properties/system.properties" />
    

    来自类路径

    您可以使用类路径将属性文件写入资源目录或 jar 并将其作为资源读出。

    <property resource="prod.properties" />
    

    使用属性定义器

    您可以通过使用属性定义器来安排调用您的代码。例如:

    <define name="MY_HOME" class="biz.nowhere.HomePropertyDefiner">
       <application>app</application>
    </define>
    

    那个类是这样的(例如):

    public class HomePropertyDefiner extends PropertyDefinerBase {
    
      private String application;
    
      @Override
      public String getPropertyValue() {
        return String.format("/opt/%s/%s", application, MyInstanceManager.instancePath());
      }
    
      public void setApplication(String application) {
          this.application = application;
      }
    
    }
    

    【讨论】:

    • 我遇到了一些与ch.qos.logback.core.PropertyDefinerBase 不一致的ch.qos.logback.core.util.IncompatibleClassException 问题,必须将extends PropertyDefinerBase 替换为extends ch.qos.logback.core.spi.ContextAwareBase implements ch.qos.logback.core.spi.PropertyDefiner
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多