我正在使用microlog4android來登錄到文件。問題是如何設置最大文件大小?我如何在Android上設置日誌文件最大大小
microlog4android FileAppender類有兩個方法:getLogSize(總是返回-1)並清除。我可以清除日誌,當它達到一定的大小,但getLogSize似乎不工作。
有沒有更好,更成熟的android日誌解決方案,我不知道?
我正在使用microlog4android來登錄到文件。問題是如何設置最大文件大小?我如何在Android上設置日誌文件最大大小
microlog4android FileAppender類有兩個方法:getLogSize(總是返回-1)並清除。我可以清除日誌,當它達到一定的大小,但getLogSize似乎不工作。
有沒有更好,更成熟的android日誌解決方案,我不知道?
您可以使用logback-android與RollingFileAppender
和SizeBasedTriggeringPolicy
,但你應該知道的bug(src),可能會使您的工作日誌文件超過最大文件大小。一種解決方法是繼承觸發策略繞過漏洞:
package com.example;
import java.io.File;
import ch.qos.logback.core.util.FileSize;
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());
}
}
下面是一個例子配置(基於的logback manual和包括上述解決方法),你可以把你的AndroidManifest.xml。我在Android 4.0.3模擬器中測試了這個,但我想它也可以在早期版本中使用。
<logback>
<configuration debug="true">
<appender
name="LOGCAT"
class="ch.qos.logback.classic.android.LogcatAppender" >
<encoder>
<pattern>[%method] %msg%n</pattern>
</encoder>
</appender>
<property name="dest.dir" value="/sdcard/test/" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${dest.dir}/test.log</file>
<append>false</append>
<!-- #########################################
# Max of 2 backup zip's (plus uncompressed
# working file, ${dest.dir}/test.log)
######################################### -->
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>${dest.dir}/test.%i.log.zip</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>2</maxIndex>
</rollingPolicy>
<!-- #########################################
# Rollover when file size reaches 5MB.
# We're using our custom policy here that
# works around a bug (LBCORE-123).
######################################### -->
<!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
<triggeringPolicy class="com.example.SizeBasedTriggeringPolicy">
<maxFileSize>5MB</maxFileSize>
</triggeringPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.example.HelloAndroidActivity" level="TRACE">
<appender-ref ref="FILE" />
</logger>
<root level="DEBUG" >
<appender-ref ref="LOGCAT" />
</root>
</configuration>
</logback>
可能是您可以使用普通文件apis檢索文件長度,然後在初始化Logger之前刪除/重命名它,如果它超過大小限制。
很好的信息。不知怎的,在我按照上面所說的做了什麼之後,我仍然無法獲取文件。我在SizeBasedTriggeringPolicy處設置了一個斷點,我可以接到回電,並且返回結果爲true。但文件不滾動。不知道爲什麼。 –
windfly2006