Change KeenLogPatch to handle errors better

This commit is contained in:
John Gross
2020-04-23 12:59:46 -07:00
parent d6fe6234d7
commit 88d10d1955

View File

@@ -66,31 +66,32 @@ namespace Torch.Patches
return typeof(KeenLogPatch).GetMethod(name, BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); return typeof(KeenLogPatch).GetMethod(name, BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public);
} }
[ReflectedMethod(Name = "GetThreadId")]
private static Func<MyLog, int> _getThreadId;
[ReflectedMethod(Name = "GetIdentByThread")] [ReflectedMethod(Name = "GetIdentByThread")]
private static Func<MyLog, int, int> _getIndentByThread; private static Func<MyLog, int, int> _getIndentByThread;
private static readonly ThreadLocal<StringBuilder> _tmpStringBuilder = new ThreadLocal<StringBuilder>(() => new StringBuilder(32)); [ThreadStatic]
private static StringBuilder _tmpStringBuilder;
private static StringBuilder PrepareLog(MyLog log) private static StringBuilder PrepareLog(MyLog log)
{ {
if (_tmpStringBuilder == null)
_tmpStringBuilder = new StringBuilder();
_tmpStringBuilder.Clear();
var i = Thread.CurrentThread.ManagedThreadId;
int t = 0;
try try
{ {
var v = _tmpStringBuilder.Value; t = _getIndentByThread(log, i);
v.Clear();
var i = _getThreadId(log);
var t = _getIndentByThread(log, i);
v.Append(' ', t * 3);
return v;
} }
catch (Exception e) catch (Exception e)
{ {
_log.Error(e); _log.Debug(e, "Failed to get thread indent");
return _tmpStringBuilder.Value.Clear();
} }
//return _tmpStringBuilder.Value.Clear().Append(' ', _getIndentByThread(log, _getThreadId(log)) * 3);
_tmpStringBuilder.Append(' ', t * 3);
return _tmpStringBuilder;
} }
private static bool PrefixWriteLine(MyLog __instance, string msg) private static bool PrefixWriteLine(MyLog __instance, string msg)