访问属性/环境变量而不启动Eclipse?

时间:2019-05-29 19:44:27

标签: java eclipse variables log4j environment-variables

我想设置log4j配置文件路径/其他文件夹路径,这些路径可以在其他类文件中使用,而无需对文件夹路径进行硬编码。

现在,我已将变量设置为环境变量。但是,只有在启动Eclipse时才能对其进行修改。如何设置此变量,以使任何人(不想启动Eclipse)都可以从外部对其进行修改。另外,它将在测试配置中使用。因此,最好不要对其进行硬编码,并使所有文件路径等易于重构。

final static String log4jpath = System.getenv("LOG4J_PATH");

3 个答案:

答案 0 :(得分:0)

Soni,如果要将log4j配置文件放在一个位置,以便所有人都可以访问。请按照下列步骤操作。

  1. 创建一个名称相同的项目,并在src / main / resources文件夹中保留log4j配置文件。
  2. 创建一个必须包含此log4j配置文件的jar文件。
  3. 在需要的位置使用此创建的jar文件。 Log4j将自动使用该配置进行所需的日志记录。如果需要,可以将此jar文件分发给任何想要使用它的人。

上面的选项是如果您不想更改配置文件。

现在,如果有人要修改配置文件。 在这种情况下,只需将配置放在任何项目类路径中,即位于资源文件夹中。只要log4j jar文件位于类路径和配置文件中即可。它将记录所有内容。

但是,如果需要,可以通过将配置作为对象传递来扩展Log4j的功能。您可以在下面的链接中进行参考,以编程方式进行访问。

https://howtodoinjava.com/log4j/how-to-programmatically-configure-appenders-in-log4j/

答案 1 :(得分:0)

我已在属性文件(例如config.properties)中添加了所有文件和文件夹路径,然后由model

在testsetup方法中使用了它

这样,可以从外部修改所有文件/文件夹路径,而无需从项目内部设置环境变量。

答案 2 :(得分:0)

改写comment

  

[如何从Java程序之外获取价值](例如包含所有其他文件路径的单独文件)?

称为配置文件

它通常是一个属性文件,类似于Log4j配置文件,但它可以是任何类型的文件,例如XML,JSON,YAML等...

要标识单个此类文件,可以使用:

  • 环境变量(就像您现在一样)
  • 系统属性(更常见)
  • 当前目录中的一个专门命名的文件
  • ...

该文件中的条目将标识您真正想要的所有值。

例如,作为一个填充Java框架的Spring将在许多地方寻找配置 values 。有关详细信息,请参见24. Externalized Configuration,但以下是最常见的摘要:

    1. 命令行参数,例如java -jar MyApp.jar --foo=bar
    1. Java系统属性,例如在命令行上使用-Dfoo=bar进行设置
    1. 操作系统环境变量,例如SET foo=bar(Windows)或export foo=bar(Linux)
    1. 打包的jar之外的应用程序属性,即相对于当前目录的属性。
      名称和位置可以在命令行上覆盖。
      • config/application.properties
      • config/application.yaml
      • application.properties
      • application.yaml