6 using System.Runtime.InteropServices;
10 class LogcatTextWriter : TextWriter {
12 const string LibLog = "/system/lib/liblog.so";
13 const string LibLog64 = "/system/lib64/liblog.so";
16 readonly string appname;
17 StringBuilder line = new StringBuilder ();
19 public LogcatTextWriter (string appname, TextWriter stdout)
21 this.appname = appname;
25 public override Encoding Encoding {
26 get {return Encoding.UTF8;}
29 public override void Write (string s)
36 public override void Write (char value)
44 public override void WriteLine ()
46 var o = line.ToString ();
49 Log (LogLevel.Info, appname, o);
65 public static bool IsRunningOnAndroid ()
67 return File.Exists (LibLog) || File.Exists (LibLog64);
70 [DllImport ("liblog")]
71 static extern void __android_log_print (LogLevel level, string appname, string format, string args, IntPtr zero);
73 static void Log (LogLevel level, string appname, string log)
75 __android_log_print (level, appname, "%s", log, IntPtr.Zero);