加载 java.util.logging.config.file 以进行缺省初始化

2022-09-01 14:58:08

我正在尝试在应用程序启动时加载自定义文件。log.properties

我的属性文件与主类位于同一包中,因此我假设命令行参数应加载属性文件。-Djava.util.logging.config.file=log.properties

但是,仅当我指定属性文件的完整绝对路径时,才会加载属性。任何建议如何使用相对路径?


答案 1

您可以非常轻松地从相对路径动态加载属性文件。这就是我在课堂上放在一个街区里的东西。将您的文件放在 中,您可以使用以下代码非常轻松地访问它。java.util.loggingstatic {}Mainlogging.propertiesdefault package

final InputStream inputStream = Main.class.getResourceAsStream("/logging.properties");
try
{
    LogManager.getLogManager().readConfiguration(inputStream);
}
catch (final IOException e)
{
    Logger.getAnonymousLogger().severe("Could not load default logging.properties file");
    Logger.getAnonymousLogger().severe(e.getMessage());
}

答案 2

Java日志记录不会在整个硬盘上搜索文件;有非常简单的规则来查找文件。您希望Java看到这两个文件彼此属于彼此,但您没有在任何地方都这么说。由于 Java 除了属性文件与类位于磁盘上的同一文件夹中之外,看不到任何连接,因此它找不到该文件。

-Djava.util.logging.config.file=log.properties仅当文件位于 Java 进程的当前目录中(可能非常随机)时才有效。因此,您应该在此处使用绝对路径。log.properties

另一种解决方案是将文件移入(或编辑应该在那里的文件)。在这种情况下,不需要设置系统属性。logging.properties$JAVA_HOME/lib/