alibaba / nacos

an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.
https://nacos.io
Apache License 2.0
30.17k stars 12.82k forks source link

监听logback.xml配置改动,刷新其他配置后,日志文件不写入 #11598

Closed whiteppure closed 9 months ago

whiteppure commented 9 months ago

Describe the bug

环境 单机版nacos2.2.2; jdk1.8; springboot 2.2.2

我将logback.xml配置通过nacos监听的方式,集成进了nacos里面,当我修改这个配置的时候,程序里面能实时的更新变化 image

使用nacos监听logback,如图 image

这是监听另一个配置,当我在nacos修改这个相关(如图)配置后,日志就不追加写入磁盘了,但是控制台仍旧输出相关日志,当我在nacos中修改了logback相关的配置,日志又可以写入磁盘了 image

logback.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" scanPeriod="60 seconds" debug="false">

    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <property name="FILE_PATH" value="/home/logs/xxx" />

    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t][%X{TRACE_ID}]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${FILE_PATH}/fm086.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${FILE_PATH}/%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>100MB</maxFileSize>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%X{TRACE_ID}] [%15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--druid慢查询日志输出-->
   <appender name="druid_file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${FILE_PATH}/log_druid_slow_sql.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${FILE_PATH}/druid/log-druid_slow_sql-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%X{TRACE_ID}] [%15t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>

    <!--druid相关logger-->
    <logger name="com.alibaba.druid.filter.stat.StatFilter" level="ERROR">
        <appender-ref ref="console" />
        <appender-ref ref="druid_file" />
    </logger>

    <!-- MyBatis log configure -->
    <logger name="com.apache.ibatis" level="INFO"/>
    <logger name="org.mybatis.spring" level="DEBUG"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>

    <!-- 减少部分debug日志 -->
    <logger name="druid.sql" level="INFO"/>
    <logger name="org.apache.shiro" level="INFO"/>
    <logger name="org.mybatis.spring" level="INFO"/>
    <logger name="org.springframework" level="INFO"/>
    <logger name="org.springframework.context" level="WARN"/>
    <logger name="org.springframework.beans" level="WARN"/>
    <logger name="com.baomidou.mybatisplus" level="INFO"/>
    <logger name="org.apache.ibatis.io" level="INFO"/>
    <logger name="org.apache.velocity" level="INFO"/>
    <logger name="org.eclipse.jetty" level="INFO"/>
    <logger name="io.undertow" level="INFO"/>
    <logger name="org.xnio.nio" level="INFO"/>
    <logger name="org.thymeleaf" level="INFO"/>
    <logger name="springfox.documentation" level="INFO"/>
    <logger name="org.hibernate.validator" level="INFO"/>
    <logger name="com.netflix.loadbalancer" level="INFO"/>
    <logger name="com.netflix.hystrix" level="INFO"/>
    <logger name="com.netflix.zuul" level="INFO"/>
    <logger name="de.codecentric" level="INFO"/>
    <!-- cache INFO -->
    <logger name="net.sf.ehcache" level="INFO"/>
    <logger name="org.springframework.cache" level="INFO"/>

</configuration>

bootstrap.yml配置

spring:
  application:
    name: xxx
  profiles:
    active: nacos
  cloud:
    nacos:
      discovery:
        serverAddr: xxx
        namespace: xxx
        group: xxx
        username: xxx
        password: xxx
      config:
        serverAddr: xxx
        namespace: xxx
        group: xx
        fileExtension: yml
        username: xxx
        password: xxx
        refresh-enabled: true
        extension-configs:
          - data-id: web.properties
            group: xxx
            refresh: true
          - data-id: fdfs_client.properties
            group: xxx
            refresh: true

Expected behavior

当改变nacos中的配置时,正常向磁盘中写入日志文件

Actually behavior

当改变nacos中的配置时,未向磁盘中写入日志文件

whiteppure commented 9 months ago

help me. thanks

KomachiSion commented 9 months ago

先看下${user.home}/logs/nacos/config.log 日志, 以及${user.home}/nacos/config中对应的配置文件快照。

如果配置已经下发成功, 那就和nacos没什么关系了, 需要去Spring Cloud Alibaba社区询问一下为什么应用没有使用新配置。

KomachiSion commented 9 months ago

No more response from author, It seems usage problem.