3c1f479b9d
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
81 lines
1.4 KiB
C#
81 lines
1.4 KiB
C#
#if MONODROID
|
|
|
|
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace System.IO {
|
|
|
|
class LogcatTextWriter : TextWriter {
|
|
|
|
const string LibLog = "/system/lib/liblog.so";
|
|
const string LibLog64 = "/system/lib64/liblog.so";
|
|
|
|
TextWriter stdout;
|
|
readonly string appname;
|
|
StringBuilder line = new StringBuilder ();
|
|
|
|
public LogcatTextWriter (string appname, TextWriter stdout)
|
|
{
|
|
this.appname = appname;
|
|
this.stdout = stdout;
|
|
}
|
|
|
|
public override Encoding Encoding {
|
|
get {return Encoding.UTF8;}
|
|
}
|
|
|
|
public override void Write (string s)
|
|
{
|
|
if (s != null)
|
|
foreach (char c in s)
|
|
Write (c);
|
|
}
|
|
|
|
public override void Write (char value)
|
|
{
|
|
if (value == '\n')
|
|
WriteLine ();
|
|
else
|
|
line.Append (value);
|
|
}
|
|
|
|
public override void WriteLine ()
|
|
{
|
|
var o = line.ToString ();
|
|
line.Clear ();
|
|
|
|
Log (LogLevel.Info, appname, o);
|
|
stdout.WriteLine (o);
|
|
}
|
|
|
|
enum LogLevel {
|
|
Unknown,
|
|
Default,
|
|
Verbose,
|
|
Debug,
|
|
Info,
|
|
Warn,
|
|
Error,
|
|
Fatal,
|
|
Silent
|
|
}
|
|
|
|
public static bool IsRunningOnAndroid ()
|
|
{
|
|
return File.Exists (LibLog) || File.Exists (LibLog64);
|
|
}
|
|
|
|
[DllImport ("liblog")]
|
|
static extern void __android_log_print (LogLevel level, string appname, string format, string args, IntPtr zero);
|
|
|
|
static void Log (LogLevel level, string appname, string log)
|
|
{
|
|
__android_log_print (level, appname, "%s", log, IntPtr.Zero);
|
|
}
|
|
}
|
|
}
|
|
|
|
#endif // MONODROID
|