使用FileNamePattern作为示例,在application.properties中,我有这样的:
log.filePattern=/%d{yyyy/MM-MMMM/dd-EEEE}
在logback.xml中,我将这样做:
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${log.logDirectory}${log.filePattern}.log </FileNamePattern> </rollingPolicy>
运行应用程序时,我会看到以下错误:
ERROR in ch.qos.logback.core.joran.spi.Interpreter@24:25 - RuntimeException in Action for tag [rollingPolicy] java.lang.IllegalStateException: FileNamePattern [log.logDirectory_IS_UNDEFINEDlog.filePattern_IS_UNDEFINED.log] does not contain a valid Datetoken
类似的代码在其他Spring(而不是Spring Boot)应用程序中工作正常,所以我很好奇,如果Spring Boot只是有点不一样。
解:
感谢您的回复@Gary!很高兴知道Spring EL和Logback的变量之间的区别…我认为是负责为我解析这些变量的Spring。我确实有这个元素,但这让我想到了。
我的application.properties文件在jar之外,所以Logback不知道在哪里找到它。通过将我的Spring相关属性保存在我的外部application.properties文件中,将日志相关属性移动到application-internal.properties文件(位于jar内),并将Logback指向该文件(< property resource =“application -internal.properties“/>)让所有的工作按预期!
我认为你将回溯“变量”与Spring“Property Placeholder”混淆。
他们恰好使用相同的语法$ {…}。
logback什么都不了解Spring属性占位符机制,反之亦然。您需要根据logback文档配置您的logback变量,而不是在application.properties / application.yml中,这是严格的Spring(引导)概念。
编辑:
<property resource="application.properties" />
到logback.xml应该工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。