无法将配置文件夹中 logback-spring.xml 的属性覆盖到其他模块的 logback-spring.xml

Posted

技术标签:

【中文标题】无法将配置文件夹中 logback-spring.xml 的属性覆盖到其他模块的 logback-spring.xml【英文标题】:Cannot override properties of logback-spring.xml in config folder to other module's logback-spring.xml 【发布时间】:2018-08-21 17:34:49 【问题描述】:

这是我第一次在 spring 中使用日志记录,我在 maven 项目根目录的 config 文件夹中获得了一个 logback-spring.xml。我的项目中还有 3 个模块,并且所有三个模块的 src/main/resource 路径中都有相同的 logback-spring.xml 文件。

例如。 在 projectStar/config/logback-spring.xml 我有属性:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>%dyyyy-MM-dd HH:mm:ss %p %m%n</pattern>
        </encoder>
        <file>$LOG_FILE</file>
        <rollingPolicy 
         class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>$LOG_FILE.%dyyyy-MM-dd.%i.zip</fileNamePattern>
            <maxFileSize>2KB</maxFileSize>
            <maxHistory>2</maxHistory>
        </rollingPolicy>
</appender>


    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE"/>
    </root>

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

在 projectStar/server/src/main/resource/logback-spring.xml 中有属性:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <encoder>
             <pattern>%dyyyy-MM-dd HH:mm:ss %p %m%n</pattern>
         </encoder>
         <file>$LOG_FILE</file>
         <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
             <fileNamePattern>$LOG_FILE.%dyyyy-MM-dd.%i.txt</fileNamePattern>
             <maxFileSize>1KB</maxFileSize>
             <maxHistory>2</maxHistory>
         </rollingPolicy>
</appender>

    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE"/>
    </root>

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

还有一个 yaml 文件,其中也有如下属性:

logging:
  level:
    org.springframework.web: DEBUG

  file: log/a.log
  config: classpath:logback-spring.xml

现在,当我运行项目服务器时,它不会从配置 logback 文件中覆盖属性,而是从服务器资源 logback 文件中获取。 它给了我文件

a.log.2018-04-06-21.0.txt

但我需要文件

a.log.2018-04-06-21.0.zip

文件。 我希望我的日志必须是 zip 格式并且大小为 2 KB(如 config/logback-spring.xml 文件中所述),无论我在其他模块中提供什么。它总是首先从配置 logback 中获取,如果没有找到,则进入其他模块内部。

【问题讨论】:

【参考方案1】:

你应该把第一个logback-spring.xml放在projectStar/server/src/main/resource/config中,/config下的文件会覆盖/resource中的那个。

【讨论】:

你的意思是我应该在resource下做一个config文件夹! 不,它不起作用。它仍然首先从 projectStar/server/src/main/resource/config 获取属性,而不是覆盖根 /config 文件夹中的属性。

以上是关于无法将配置文件夹中 logback-spring.xml 的属性覆盖到其他模块的 logback-spring.xml的主要内容,如果未能解决你的问题,请参考以下文章

springboot配置每天一个日志文件logback-spring.xml

springboot使用默认的logback配置logback-spring.xml每天一个日志文件

springboot使用默认的logback配置logback-spring.xml每天一个日志文件

springboot使用默认的logback配置logback-spring.xml每天一个日志文件

logback-spring.xml配置文件

logback-spring.xml配置文件标签(超详解)