首页 > 解决方案 > Logback RollingFileAppender 文件属性无法识别 springProperty 值

问题描述

我的 Spring Boot 应用程序中的 Logback 配置有问题。我已经定义了一些从数据库动态加载它们的值的弹簧属性,但是当我启动应用程序时,只有标记“文件”中的属性“log4j.adm.file”不起作用。它在服务器的根路径中创建了一个文件“log4j.adm.file_IS_UNDEFINED”,但在标签“fileNamePattern”中效果很好。

知道问题出在哪里吗?我附上我的 logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>

<springProperty name="logging.pattern.console" source="logging.pattern.console"/>

**<springProperty name="log4j.adm.file" source="log4j.adm.file"/>**
<springProperty name="log4j.adm.bck.number" source="log4j.adm.bck.number"/>
<springProperty name="log4j.adm.max.size" source="log4j.adm.max.size"/>
<springProperty name="log4j.adm.level" source="log4j.adm.level"/>

<appender name="FILE_ADMIN" class="ch.qos.logback.core.rolling.RollingFileAppender">
    **<file>${log4j.adm.file}</file>   ---> ERROR**
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        **<fileNamePattern>${log4j.adm.file}.%i</fileNamePattern>   --> OK**
        <minIndex>1</minIndex>
        <maxIndex>${log4j.adm.bck.number}</maxIndex>
    </rollingPolicy>

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>50MB</maxFileSize>
    </triggeringPolicy>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            ${logging.pattern.console}
        </Pattern>
    </encoder>
</appender>

<logger name="org.xxxx.xxxx" level="${log4j.adm.nivel}" additivity="false">
    <appender-ref ref="FILE_ADMIN" />
</logger>

<root level="INFO">
    <appender-ref ref="CONSOLE" />
</root>

标签: javaspring-bootlogback

解决方案


我认为你的问题应该在标签中使用 scope="context" 来解决。


推荐阅读