Logback Android - 日志没有被轮换

时间:2014-10-09 04:51:28

标签: android logback

这是logback.xml。

test.log被创建,但是,当文件大小超过1KB时,它不会被轮换。

我在Android模拟器和三星Galaxy S4手机上测试了这个。

我正在使用logback-android-1.1.1-3。

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>test.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>test.%i.log.zip</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>3</maxIndex>
        </rollingPolicy>

        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>1KB</maxFileSize>
        </triggeringPolicy>

        <encoder>
            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="logcat" class="ch.qos.logback.classic.android.LogcatAppender">
        <encoder>
            <pattern>%msg</pattern>
        </encoder>
    </appender>

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

我不知道我做错了什么。此配置直接来自http://logback.qos.ch/manual/appenders.html

非常感谢任何指针!

谢谢!

1 个答案:

答案 0 :(得分:2)

弄清楚自己我必须改变两件事。

  1. 我不得不扩展SizeBasedTriggeringPolicy并覆盖isTriggeringEvent方法。
  2. 我使用了filenamepattern中的绝对路径。
  3. logback.xml:

    <configuration>
        <property name="EXT_FILES_DIR" value="${EXT_DIR:-sdcard}"/>  
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${EXT_FILES_DIR}/twapp/logs/twapp.log</file>
            <append>false</append>    
    
            <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
                <fileNamePattern>${EXT_FILES_DIR}/twapp/logs/tw.%i.log.zip</fileNamePattern>
                <minIndex>1</minIndex>
                <maxIndex>4</maxIndex>
            </rollingPolicy>
    
           <!-- Overridden SizeBasedTriggeringPolicy -->
            <triggeringPolicy class="com.twapp.util.SizeBasedTriggeringPolicy">
                <maxFileSize>10KB</maxFileSize>
            </triggeringPolicy>
    
            <encoder>
                <pattern>%d{YY:HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <appender name="logcat" class="ch.qos.logback.classic.android.LogcatAppender">
            <encoder>
                <pattern>%msg</pattern>
            </encoder>
        </appender>
    
        <root level="DEBUG">
            <appender-ref ref="logcat" />
        </root>
        <root level="DEBUG">
            <appender-ref ref="FILE" />
        </root>
    </configuration>
    

    Extended SizeBasedTriggeringPolicy类:

    public class SizeBasedTriggeringPolicy<E> extends ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy<E>
    {
    
        @Override    
        public boolean isTriggeringEvent(final File activeFile, final E event)
        {
            return (activeFile.length() >= FileSize.valueOf(getMaxFileSize()).getSize());  
        }
    }