public static void TraceLog(Exception ex, string message, bool reportIt = true, [CallerFilePath] string filePath = "", [CallerLineNumber] int lineNumber = 0, [CallerMemberNameAttribute] string method = "")
{
if (LogLevel > eTraceType.Info)
return;
#if DEBUG
try { var p = Path.GetFileName(filePath); } catch { Debug.Assert(false, "Invalid Log message"); };
#endif
//two spaces after info not a typo
while (ex != null)
{
var stack = ex.StackTrace;
#if NETFX
try { Trace.WriteLine(String.Format("{0} Info {1} [{2}:{3}] :: {4}", DateTime.Now, Path.GetFileName(filePath), method, lineNumber, message + " (" + ex.Message + ")" + Environment.NewLine + "StackTrace : " + stack)); } catch { }
#elif UNIVERSAL
try { Debug.WriteLine(String.Format("{0} Info {1} [{2}:{3}] :: {4}", DateTime.Now, Path.GetFileName(filePath), method, lineNumber, message + " (" + ex.Message + ")" + Environment.NewLine + "StackTrace : " + stack)); } catch { }
#endif
ex = ex.InnerException;
}
}