Java可执行jar logback-spring.xml没有看到logback.properties文件

标签 java maven logging logback executable-jar

问题是 logback.xml 文件看不到 logback.properties 文件。

我正在尝试运行一个使用 Maven 构建的可执行 jar(我们将其称为 foo.jar)。当尝试运行 foo.jar 时,它会失败,因为它找不到 logback.properties 文件。该文件确实存在于 foo.jar 中,并且是 logback.xml 文件的同级文件。

我尝试在 foo.jar 中手动移动 logback.properties 文件,但没有成功。但是,我发现如果我将 logback.properties 文件的副本放在 jar 之外的 jar 所在目录中,那么它就会看到属性文件并启动。

有人可以解释如何让 foo.jar 在其内部查找属性文件吗?

示例:假设我有 logback.xmllogback.properties 文件,均位于 'foo/bar 路径下的 foo.jar 中'.

我必须做什么才能让它找到属性文件?

旁注:这是一个 Spring Boot 项目,老实说我对 Spring 一无所知,所以我不知道这是否是造成悲伤的障碍。

我的 logback.xml 文件通过以下方式引用 logback.properties 文件

<property file="logback.properties" />

最佳答案

来自Logback docs (实际上与Spring无关)

You may also reference a resource on the class path instead of a file.

<configuration>
  <property resource="resource1.properties" />
  ... snip ...
</configuration>

这将尝试在类路径的根目录中找到属性文件(如果您使用的是 Maven,则在 src/main/resources 中)。 <property file="..."/>语法是在文件系统中相对于应用程序的当前工作文件夹定位文件,因此如果将文件放置在 JAR 旁边,它会正确定位文件,就像您所描述的那样。

关于Java可执行jar logback-spring.xml没有看到logback.properties文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47928043/

相关文章:

hadoop - 如何恢复 yarn 的旧日志?

java - 如何从逗号分隔值创建 Collection<String> 对象

java - 使用 URI userinfo 组件进行身份验证 http ://userinfo@hostname:port/path in a servlet

java - 如何解决: java. lang.NoSuchMethodError : javax. persistence.EntityManager.createStoredProcedureQuery(Ljava/lang/String;)

maven - 如何正确删除 Maven 项目中的依赖项

java - 修复 java.lang.ClassNotFoundException : com. fastxml.jackson.annotation.JsonAutoDetect

logging - 如何获取 ansible-playbook 模块执行的日志/详细信息?

java - 如何复制ant运行后创建的文件

java - PHP getdate() 转换为 Java 日期

Tomcat登录webapp和容器?