diff --git a/core/java/src/net/i2p/util/LogManager.java b/core/java/src/net/i2p/util/LogManager.java
index d608438065edaaa3b3cfb3c4d43d8a65df2533b4..684d495b183e7f3c4440608d863cb8767bd828f5 100644
--- a/core/java/src/net/i2p/util/LogManager.java
+++ b/core/java/src/net/i2p/util/LogManager.java
@@ -12,6 +12,8 @@ package net.i2p.util;
 import java.io.File;
 import java.io.Flushable;
 import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.text.DateFormat;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
@@ -163,7 +165,21 @@ public class LogManager implements Flushable {
         // yeah, this doesn't always work, _writer should be volatile
         if (_writer != null)
             return;
-        _writer = new FileLogWriter(this);
+        if (SystemVersion.isAndroid()) {
+            try {
+                Class<?> clazz = Class.forName("net.i2p.util.AndroidLogWriter");
+                Constructor<?> ctor = clazz.getDeclaredConstructor(LogManager.class);
+                _writer = (LogWriter) ctor.newInstance(this);
+            } catch (ClassNotFoundException e) {
+            } catch (InstantiationException e) {
+            } catch (IllegalAccessException e) {
+            } catch (InvocationTargetException e) {
+            } catch (NoSuchMethodException e) {
+            }
+        }
+        // Default writer
+        if (_writer == null)
+            _writer = new FileLogWriter(this);
         _writer.setFlushInterval(_flushInterval * 1000);
         // if you enable logging in I2PThread again, you MUST change this back to Thread
         Thread t = new I2PThread(_writer, "LogWriter");