public override void Log(TIPLogLevel level, string file, string function, int line, string message) { string levelString = null; switch (level) { case TIPLogLevel.Emergency: case TIPLogLevel.Alert: case TIPLogLevel.Critical: case TIPLogLevel.Error: levelString = "ERR"; break; case TIPLogLevel.Warning: levelString = "WRN"; break; case TIPLogLevel.Notice: case TIPLogLevel.Information: levelString = "INF"; break; case TIPLogLevel.Debug: levelString = "DBG"; break; } Debug.WriteLine($"[{levelString}]: {message}"); }
private static void LogInternal(TIPLogLevel level, string format, params object[] args) { var logger = TIPGlobalConfiguration.SharedInstance.Logger; var nsLogger = logger as NSObject; if (logger != null && (nsLogger == null || !nsLogger.RespondsToSelector(tip_canLogWithLevel) || logger.CanLog(level))) { var stacktrace = new StackTrace(true); var frame = stacktrace.FrameCount >= 2 ? stacktrace.GetFrame(2) : null; var file = frame?.GetFileName(); var method = frame?.GetMethod(); var function = method == null ? null : method.DeclaringType.FullName + ": " + method.ToString(); var line = frame?.GetFileLineNumber(); var message = string.Format(format, args); logger.Log(level, file ?? string.Empty, function ?? string.Empty, line ?? 0, message, IntPtr.Zero); } }
public override bool CanLog(TIPLogLevel level) => true; // we want everything!
public static void Log(TIPLogLevel level, string format, params object[] args) => LogInternal(level, format, args);