-1

我用 graalvm 用 tinylog 构建了一个 jar,效果很好!但是当我使用 native-image 构建一个 exe 时,tinylog 只能使用默认设置。我该怎么做才能让 tinylog 使用本机图像加载我的 tinylog.properties?请~谢谢!

4

2 回答 2

0

在 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 generateConfigurationbefore./gradlew nativeImage以始终生成正确的配置。

于 2022-02-16T05:47:34.333 回答
0

感谢@Martin 我尝试将 src\main\resources\tinylog.properties 移动到 src\main\resources\META-INF\native-image\tinylog.properties

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

于 2022-02-16T10:58:15.680 回答