【问题标题】:logback doesn't find maven's property project.build.directorylogback 没有找到 maven 的属性 project.build.directory
【发布时间】:2016-03-22 16:14:28
【问题描述】:

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

这是我的 logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
    <logger name="org.springframework.boot" level="INFO"/>
    <logger name="org.springframework.security" level="ERROR"/>
    <logger name="org.glassfish.jersey" level="DEBUG"/>

    <property resource="application.properties"/>

    <appender name="DUMMY_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${project.build.directory}/${log.folder}/logfile.log</file>
        <encoder>
            <pattern>%d{"yyyy-MM-dd HH:mm:ss,SSS zzz"}, [%thread] %-5level %logger{5} - %msg%n
            </pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.folder}/spring.log.%d</fileNamePattern>
        </rollingPolicy>
    </appender>

    <logger name="xxxxxx" level="INFO" additivity="false">
        <appender-ref ref="DUMMY_APPENDER"/>
    </logger>

    <root level="INFO">
        <appender-ref ref="DUMMY_APPENDER"/>
    </root>
</configuration>

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

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

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

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

【问题讨论】:

    标签: spring maven properties spring-boot logback


    【解决方案1】:

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

    这里是如何使它工作。我已经重现了这个问题并在这里提出了一个解决方案:https://github.com/ajorpheus/logback-maven/releases

    这里是修复的摘要:https://github.com/ajorpheus/logback-maven/commit/f245e5a6f4c13f9ba8e161c5452d296b653977d0

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

    2. 使用logback.xml appender 中的属性:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        喜欢tomcat

        ${catalina.base}/logs
        

        【讨论】:

          猜你喜欢
          • 2023-03-24
          • 1970-01-01
          • 2011-06-24
          • 1970-01-01
          • 1970-01-01
          • 2020-08-05
          • 1970-01-01
          • 2014-06-26
          • 2018-09-30
          相关资源
          最近更新 更多