2013-09-11 2 views
2

На медленном устройство получило СТРОГОЕ исключение РЕЖИМА:Как заставить log4j писать в лог-файл не из основного потока

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) 

на первой операцию каротажа в главного потока. Я использую log4j с RollingFileAppender.

Записывает ли файл в основной поток? Это странно, на мой взгляд ... Как я могу заставить log4j написать в файл журнала из какого-то другого потока, а не из основного потока?

ответ

0

"Простой".

Создайте приложение Log4j и вызовите журналы всегда из фонового потока.

Вы можете использовать, например, метод AsyncTask doInBackground для выполнения вызовов.