gpt4 book ai didi

logback - 如何在 logback.xml 中动态指定文件路径

转载 作者:行者123 更新时间:2023-12-04 17:46:36 36 4
gpt4 key购买 nike

我是 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.xml configuration
  • logback how to set destination folder for log files

  • 但是手册上 configuration表明该机制非常灵活

    As in many scripting languages, logback configuration files support definition and substitution of variables. Variables can be defined within the configuration file itself, in an external file, in an external resource or even computed and defined on the fly.



    总之,您有许多用于定义 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>

    该类(class)类似于(例如):
    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;
    }

    }

    关于logback - 如何在 logback.xml 中动态指定文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32595740/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com