如何在logback.xml中动态指定文件路径 [英] How to specify file path Dynamically in logback.xml

查看:2325
本文介绍了如何在logback.xml中动态指定文件路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Logback的新手,我试图为Windows和Linux动态添加带有属性文件的文件路径.

I am new to Logback, I am trying to add file path dynamically, with a property file, for both windows and Linux.

这是我拥有的代码sinppet,如何将值获取到$ {MY_HOME}

Here is the code sinppet I have, how can I get the value to ${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> 

推荐答案

通常,这是系统属性,有一些与此相关的答案,但仅提供了一部分答案.这些是:

Typically this is a system property, there are some answers that touch on this but only provide one part of the answer. These are:

  • Logback.xml configuration
  • logback how to set destination folder for log files

但是配置上的手册显示该机制非常灵活

But the manual on configuration shows that the mechanism is quite flexible

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

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的值:

In summary you have a number of options for defining the value of MY_HOME:

在文件中

您可以使用以下命令在文件本身中定义值:

You are able to define the value in the file itself with:

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

在系统属性中

您可以安排将其设置为系统属性,最有可能在启动JVM时使用.

You can arrange for it to be set as a system property, most likely when you start the JVM.

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

从系统上的属性文件中

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

You can arrange for logback to read a property file:

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

从类路径

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

You can write a properties file into a resources directory or into a jar and read it out as a resource, using the classpath.

<property resource="prod.properties" />

使用属性定义器

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

You can arrange to call into your code, by using a property definer. For example:

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

该类类似(例如)的地方:

Where that class is something like (as an example):

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.xml中动态指定文件路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆