如何强制log4j写入日志文件而不是主线程

时间:2013-09-11 07:41:55

标签: android logging log4j android-strictmode

在慢速设备上获得STRICT MODE异常:

 D/StrictMode: StrictMode policy violation; ~duration=494 ms: android.os.StrictMode$StrictModeDiskWriteViolation: policy=87 violation=1
        at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:732)
        at dalvik.system.BlockGuard$WrappedFileSystem.write(BlockGuard.java:170)
        at java.io.FileOutputStream.write(FileOutputStream.java:300)
        at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:164)
        at org.apache.log4j.helpers.QuietWriter.flush(QuietWriter.java:59)
        at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:324)
        at org.apache.log4j.RollingFileAppender.subAppend(RollingFileAppender.java:276)
        at org.apache.log4j.WriterAppender.append(WriterAppender.java:162)
        at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:251)
        at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:66)
        at org.apache.log4j.Category.callAppenders(Category.java:206)
        at org.apache.log4j.Category.forcedLog(Category.java:391)
        at org.apache.log4j.Category.debug(Category.java:260)

主线程第一次日志记录操作。 我正在使用带有RollingFileAppender的log4j。

它是否写入主线程中的文件?在我看来,这很奇怪...... 如何强制log4j从其他线程写入日志文件,而不是从主线程写入?

1 个答案:

答案 0 :(得分:0)

"简单"

创建Log4j appender,并始终从后台线程调用日志。

您可以使用AsyncTask doInBackground方法进行调用。