在 graalvm 中,如何使用 native-image 加载 tinylog.properties?

In graalvm, how to load tinylog.properties with native-image?

我使用 graalvm 构建了一个带有 tinylog 的 jar 并且工作得很好! 但是当我使用 native-image 构建一个 exe 时,tinylog 只能使用默认设置。 我该怎么做才能让 tinylog 可以用原生图像加载我的 tinylog.properties? 请~谢谢!

在 GitHub 上,您可以找到一个在本机映像构建中使用 tinylog 2 的最小示例项目:https://github.com/tinylog-org/tinylog-graal-example

您需要自定义 Gradle 任务来生成本机映像的配置(请参阅 tinylog-graal-example/blob/v2/build.gradle)。

task generateConfiguration(type: Exec) {
    group = "graal"
    description = "Run application to generate the configuration for native image generation"
    dependsOn jar, extractGraalTooling
    commandLine project.gradle.gradleUserHomeDir.toPath().resolve("caches/com.palantir.graal/$graalVmVersion/graalvm-ce-$graalVmVersion/bin/java"), "-agentlib:native-image-agent=config-output-dir=" + project.buildDir.toPath().resolve("resources/main/META-INF/native-image"), "-cp", sourceSets.main.runtimeClasspath.getAsPath(), javaMainClass

    doFirst {
        mkdir project.buildDir.toPath().resolve("resources/main/META-INF/native-image")
    }
}

之后,您可以在 ./gradlew nativeImage 之前 运行 ./gradlew generateConfiguration 以始终生成正确的配置。

感谢@Martin 我试着移动 src\main\resources\tinylog.属性 到 src\main\resources\META-INF\native-image\tinylog.属性

使用 native-image-agent 重新生成属性 并重建 native-image。 比它可以加载属性! 谢谢!