public static void Write(string message, Level level = Level.Logic, UnityDebugLogMode unityDebugLogMode = UnityDebugLogMode.Normal) { if (LogStreamWriter != null && MaxLevel != Level.Disabled && level <= MaxLevel) { DateTime _now = DateTime.Now; string _additional_padding = ""; switch (level) { case Level.Logic: break; case Level.Networking: _additional_padding = "<-> "; break; case Level.Debug1: _additional_padding = new String(' ', 8); break; case Level.Debug2: _additional_padding = new String(' ', 12); break; case Level.Debug3: _additional_padding = new String(' ', 16); break; } // Prefix length: 28 symbols. string _timestamp_prefix_local = "[" + _now.ToString("yyyy.MM.dd HH:mm:ss:ffff") + ((AddTid && Thread.CurrentThread.ManagedThreadId != 1) ? " tid: " + Thread.CurrentThread.ManagedThreadId.ToString() : "") + "]: " + _additional_padding; string _empty_prefix = new String(' ', 28) + _additional_padding; string _timestamp_prefix_utc = UtcTimestamp ? "[" + _now.ToUniversalTime().ToString("yyyy.MM.dd HH:mm") + " UTC ] " + _additional_padding : _empty_prefix; string preparedMessage = ""; int _line_count = 0; foreach (var _line in message.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries)) { _line_count++; switch (_line_count) { case 1: preparedMessage += _timestamp_prefix_local + _line + Environment.NewLine; break; case 2: preparedMessage += (MultilinePadding ? _timestamp_prefix_utc : "") + _line + Environment.NewLine; break; default: preparedMessage += (MultilinePadding ? _empty_prefix : "") + _line + Environment.NewLine; break; } } if (!CompactMode) { if (_line_count < 2 && UtcTimestamp) { preparedMessage += _timestamp_prefix_utc + Environment.NewLine; } preparedMessage += "" + Environment.NewLine; } lock (Locker) { if (ConsoleOutput) { Console.Write(preparedMessage); } LogStreamWriter.Write(preparedMessage); LogStreamWriter.Flush(); } } #if UNITY_5_3_OR_NEWER switch (unityDebugLogMode) { case UnityDebugLogMode.Normal: Debug.Log(message); break; case UnityDebugLogMode.Warning: Debug.LogWarning(message); break; case UnityDebugLogMode.Error: Debug.LogError(message); break; } #endif }
public static void WriteXML(DataNode node, string message = "", Level level = Level.Logic, UnityDebugLogMode unityDebugLogMode = UnityDebugLogMode.Normal) { Write(message + DataFormats.SaveToString(DataFormat.XML, node), level, unityDebugLogMode); }
public static void Write(string message, Level level = Level.Logic, UnityDebugLogMode unityDebugLogMode = UnityDebugLogMode.Normal) { if (MaxLevel != Level.Disabled && level <= MaxLevel) { FileMode _fileMode = FileMode.Append; if (OverwriteOldContent) { _fileMode = FileMode.Create; OverwriteOldContent = false; } using (FileStream _fileStream = File.Open(FilePath, _fileMode, FileAccess.Write, FileShare.Read)) { using (StreamWriter _streamWriter = new StreamWriter(_fileStream)) { DateTime _now = DateTime.Now; string _additional_padding = ""; switch (level) { case Level.Logic: break; case Level.Networking: _additional_padding = "<-> "; break; case Level.Debug1: _additional_padding = new String(' ', 8); break; case Level.Debug2: _additional_padding = new String(' ', 12); break; case Level.Debug3: _additional_padding = new String(' ', 16); break; } // Prefix length: 28 symbols. string _timestamp_prefix_local = "[" + _now.ToString("yyyy.MM.dd HH:mm:ss:ffff") + "]: " + _additional_padding; string _timestamp_prefix_utc = "[" + _now.ToUniversalTime().ToString("yyyy.MM.dd HH:mm") + " UTC ] " + _additional_padding; string _empty_prefix = new String(' ', 28) + _additional_padding; int _line_count = 0; foreach (var _line in message.Split(new string[] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries)) { _line_count++; switch (_line_count) { case 1: _streamWriter.WriteLine(_timestamp_prefix_local + _line); break; case 2: _streamWriter.WriteLine(_timestamp_prefix_utc + _line); break; default: _streamWriter.WriteLine(_empty_prefix + _line); break; } } if (!CompactMode) { if (_line_count < 2) { _streamWriter.WriteLine(_timestamp_prefix_utc); } _streamWriter.WriteLine(""); } _streamWriter.Flush(); } } } switch (unityDebugLogMode) { case UnityDebugLogMode.Normal: Debug.Log(message); break; case UnityDebugLogMode.Warning: Debug.LogWarning(message); break; case UnityDebugLogMode.Error: Debug.LogError(message); break; } }