【问题标题】:How do I specify a logback configuration for use in a Java webstart application?如何指定用于 Java webstart 应用程序的 logback 配置?
【发布时间】:2024-01-10 08:31:01
【问题描述】:

我想为一些内部 Java webstart 应用程序添加日志记录,最好使用 logback 日志记录框架和logback.groovy 配置文件。我希望在 webstart 应用程序.jnlp 文件中指定这一点,但不清楚如何执行此操作。

我尝试在我的主 jar 的资源中添加 logback.groovy 文件(即包含我的 main 方法的文件),但 logback 没有获取该文件。

我还尝试了各种尝试将logback.groovy 文件添加到.jnlp 文件的<resources> 部分:

<jnlp ...>
  <resources>
    <j2se version="$j2seVersion" />
    $dependencies // from maven-webstart-plugin

    // some reference to my logback configuration - e.g. 
    <dir href="log/" />
  </resources>
</jnlp>

值得注意的是,logback 期望配置文件在类路径中被引用为它所在的文件夹,而不是文件本身 - 请参阅FAQs

但是,我真的不确定这将如何应用于 Java Webstart。

这可能吗?如果是这样,我该怎么做?

【问题讨论】:

  • 假设你使用 maven,你有没有尝试将 logback.groovy 放在 src/main/java 中?
  • @Askel - 我不清楚你的建议是什么。如问题所示,我曾尝试将 logback.groovy 文件放在 src/main/resources 中。为什么我要把它放在 src/main/java 中?这与使用maven有什么关系? (正如问题所示,我就是这样。)
  • afaik 在 webstart 应用程序或普通 java 应用程序中使用 logback 应该是相同的。您只需要确保从类路径中获取配置文件。我没有在 jnlp 文件中添加任何内容来使 logback 工作。只需确保配置文件是 .jar 包的一部分。
  • 我必须修复的是在 maven 配置中,确保它在构建 jar 时包含正确的文件。 maven.apache.org/plugins/maven-resources-plugin/examples/…

标签: java java-web-start logback


【解决方案1】:

所以...我最终使用的方法是(根据 Askel 的 cmets)将 logback.groovy 配置文件放入 /src/main/resources

但是,我们以多种不同的方式使用我们的 Java 库,并且我不想默认将 logback 配置文件包含在 jar 中。部分原因是我们有几个库,而 logback 不能很好地处理多个配置文件。另外根据版本,我想使用不同的 logback 配置。

对于我们的 webstart 版本,我们使用webstart-maven-plugin 来构建库、组装依赖项等。但是在进行此构建之前,我们将logback.groovy 配置文件复制到/src/main/resources -这包括该库的构建中的文件。然后,构建/发布之后,您可以从/src/main/resources 中删除配置文件。

然而,这个插件也将运行mvn install,它将把库的logback配置文件放在你的本地maven仓库中。因此,删除 build/release/temp 配置后,我们执行另一个 mvn clean install,这将覆盖该库。

【讨论】:

    最近更新 更多