mar*_*31b 5 spring properties logback maven spring-boot
我有一个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>
Run Code Online (Sandbox Code Playgroud)
它写日志,但我的问题是,当我运行应用程序时,它会创建一个文件夹project.build.directory_IS_UNDEFINED,然后将我的log.folder放在它下面.它在文档中说,那
作为其构建工具,logback依赖于Maven,这是一种广泛使用的开源构建工具.
当在logback.xml中,我开始键入$ {pro ...然后我的IDE显示一组可用的maven隐式属性.
所以它应该有效,但事实并非如此.知道为什么吗?
由于@luboskmac的说法,它不起作用.
以下是如何使其工作.我已经重现了这个问题并推出了一个解决方案:https://github.com/ajorpheus/logback-maven/releases
以下是修复程序的摘要:https://github.com/ajorpheus/logback-maven/commit/f245e5a6f4c13f9ba8e161c5452d296b653977d0
${project.build.directory}是Maven的属性,仅在maven构建期间可用。另一方面,Logback 正在应用程序的运行时使用。很明显${project.build.directory}不是在运行时定义的。
您需要选择适合运行时环境和部署拓扑的位置。