logback没有找到maven的属性project.build.directory

时间:2015-12-16 13:36:39

标签: spring maven properties spring-boot logback

我有一个使用Spring Boot和maven的小项目,现在我正在尝试配置logback来写入文件。我希望它写入由${project.build.directory}/${log.folder}/logfile.log给出的文件,因此构建目录的子文件夹,${log.folder}是我在application.properties文件中指定的属性,放在我的{{1}下面文件夹。

这是我的logback.xml

/resources

它写日志,但我的问题是,当我运行应用程序时,它会创建一个文件夹project.build.directory_IS_UNDEFINED,然后将我的log.folder放在它下面。它说in the documentation,那个

  

作为构建工具,logback依赖于广泛使用的开源Maven   构建工具。

当我在logback.xml中输入$ {pro ...时,我的IDE会显示一组可用的maven implicit properties

所以它应该有效,但它没有。知道为什么吗?

3 个答案:

答案 0 :(得分:7)

由于@luboskmac的说法,它不起作用。

以下是如何使其发挥作用。我已经复制了这个问题并推出了一个解决方案:https://github.com/ajorpheus/logback-maven/releases

以下是修复程序的摘要:https://github.com/ajorpheus/logback-maven/commit/f245e5a6f4c13f9ba8e161c5452d296b653977d0

  1. 在pom中定义一个属性来保存日志文件的位置:

    enter image description here

  2. 使用logback.xml appender:

  3. 中的属性

    enter image description here

    1. 启用maven资源过滤,以便将正在扫描的资源中定义的任何maven属性替换为其对应的值
    2. enter image description here

答案 1 :(得分:2)

${project.build.directory}是Maven的属性,仅在maven构建期间可用。另一方面,Logback正在应用程序的运行时使用。所以很明显${project.build.directory}没有在运行时定义。

您需要选择适合运行时环境和部署拓扑的位置。

答案 2 :(得分:-1)

您可以使用部署容器属性。

喜欢tomcat

${catalina.base}/logs