美文网首页
logback-spring.xml配置不生成新日志文件

logback-spring.xml配置不生成新日志文件

作者: 冰镇柠檬_tree | 来源:发表于2019-08-22 15:30 被阅读0次

    日志文件不随时间生成新得日志文件,一直累积在启动时的生成的日志文件里。
    查找资料发现,是TimeBasedRollingPolicy和SizeBasedTriggeringPolicy冲突。
    将两个去掉,使用 ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy 。
    PS : RollingFileNamePattern中 %d %i 两个参数是必须不可少的

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration>
        <contextName>Logback For demo Mobile</contextName>
        <!-- 设置日志存放地址-->
        <!-- 单环境设置-->
        <property name="LOG_HOME"  value="D:/log/tomcat_log" /> 
        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
        <property name="FORMAT" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{25} - %msg%n" />
        <property name="RollingFileNamePattern" value="${LOG_HOME}/%d{yyyy-MM-dd}.%i.log" />
        <property name="RollingMaxHistory" value="10" />
      <!--  多环境设置-->
      <!-- 如果要设置多环境的配置,还需要再给每个环境设置对应的配置文件application-dev.properties-->
      <!--  
        <springProfile name="linux">
            <property name="LOG_HOME"  value="/home/logger/mobile_log"/>
        </springProfile>
        <springProfile name="dev">
            <property name="LOG_HOME"  value="D:/logger/log4j"/>
        </springProfile>
        <springProfile name="test">
            <property name="LOG_HOME"  value="D:/logger/test"/>
        </springProfile>
        <springProfile name="prod">
            <property name="LOG_HOME"  value="D:/logger/mobile_log"/>
        </springProfile>
    -->
        <!--控制台 输出格式-->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <param name="encoding" value="UTF-8" />
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
               <pattern>${FORMAT}</pattern>
            </encoder>
        </appender>
        <!--按照每天生成日志文件-->
        <appender name="ROLLING_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                 <!--滚动策略-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--路径,当前项目的logs文件夹下-->
                <fileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.log</fileNamePattern>
                <!--日志文件保留天数-->
                <maxHistory>${RollingMaxHistory}</maxHistory>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
                <pattern>${FORMAT}</pattern>
            </encoder>
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>20MB</MaxFileSize>
            </triggeringPolicy>
     
        </appender>
    
        <!-- 运用的场景,只要com.demo.service的debug输出,定义name="com.demo.service",  level="DEBUG" -->
        <logger name="com.demo.service" level="DEBUG">
            <appender-ref ref = "ROLLING_FILE"/>
        </logger>
       
       <!--全局应用该日志配置-->
        <root level="DEBUG">
            <appender-ref ref = "STDOUT"/>
            <appender-ref ref = "ROLLING_FILE"/>
        </root>
    
    </configuration> 
    

    修正后的配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <configuration>
        <contextName>Logback For demo Mobile</contextName>
        <!-- 设置日志存放地址-->
        <!-- 单环境设置-->
        <property name="LOG_HOME"  value="D:/log/tomcat_log" /> 
        <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
        <property name="FORMAT" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{25} - %msg%n" />
        <property name="RollingFileNamePattern" value="${LOG_HOME}/%d{yyyy-MM-dd}.%i.log" />
        <property name="RollingMaxHistory" value="10" />
      <!--  多环境设置-->
      <!-- 如果要设置多环境的配置,还需要再给每个环境设置对应的配置文件application-dev.properties-->
      <!--  
        <springProfile name="linux">
            <property name="LOG_HOME"  value="/home/logger/mobile_log"/>
        </springProfile>
        <springProfile name="dev">
            <property name="LOG_HOME"  value="D:/logger/log4j"/>
        </springProfile>
        <springProfile name="test">
            <property name="LOG_HOME"  value="D:/logger/test"/>
        </springProfile>
        <springProfile name="prod">
            <property name="LOG_HOME"  value="D:/logger/mobile_log"/>
        </springProfile>
    -->
        <!--控制台 输出格式-->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <param name="encoding" value="UTF-8" />
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
               <pattern>${FORMAT}</pattern>
            </encoder>
        </appender>
        <!--按照每天生成日志文件-->
        <appender name="ROLLING_FILE"  class="ch.qos.logback.core.rolling.RollingFileAppender">
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!--日志文件输出的文件名-->
                <FileNamePattern>${RollingFileNamePattern}</FileNamePattern>
                      <!--日志文件最大的大小-->
                <maxFileSize>20MB</maxFileSize>
                <!--日志文件保留天数-->
                <MaxHistory>${RollingMaxHistory}</MaxHistory>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
                <pattern>${FORMAT}</pattern>
            </encoder>
        </appender>
    
        <!-- 运用的场景,只要com.demo.service的debug输出,定义name="com.demo.service",  level="DEBUG" -->
        <logger name="com.demo.service" level="DEBUG">
            <appender-ref ref = "ROLLING_FILE"/>
        </logger>
       
       <!--全局应用该日志配置-->
        <root level="DEBUG">
            <appender-ref ref = "STDOUT"/>
            <appender-ref ref = "ROLLING_FILE"/>
        </root>
    
    </configuration> 
    
    

    相关文章

      网友评论

          本文标题:logback-spring.xml配置不生成新日志文件

          本文链接:https://www.haomeiwen.com/subject/oxvnsctx.html