public void run() { while (true) { string msgs = FileLogBlackBoard.ReadAndWipeBlackBoard(); byte[] bytes = Encoding.UTF8.GetBytes(msgs); if (msgs == "") { Thread.Sleep(sleepTime); continue; } try { fs = File.OpenWrite(this.path); fs.Position = fs.Length; fs.Write(bytes, 0, bytes.Length); fs.Close(); } catch (Exception e) { Logger.LogError(e.Message + "\n" + e.StackTrace); } Thread.Sleep(sleepTime); } }
/// <summary> /// 普通样式 Log 打印一条信息 /// </summary> /// <returns>The log.</returns> /// <param name="msg">Message.</param> public static void Log(string msg) { msg = DateTime.Now.ToString() + " " + msg + "\n"; if (FileLog) { #region Initialize FileLogger if (!FileLoggerIsRunning) { new Thread(new ThreadStart(fp.run)).Start(); FileLoggerIsRunning = true; } #endregion #region Write BlackBoard if (FileLogBlackBoard.BlackBoardIsLocked) { logBuffer.Append(msg); } else { if (logBuffer.Length != 0) { FileLogBlackBoard.WriteBlackBoard(logBuffer.ToString() + msg); logBuffer.Clear(); } else { FileLogBlackBoard.WriteBlackBoard(msg); } } #endregion } if (DoLog) { switch (logType) { case LogType.Console: Console.WriteLine(msg); break; case LogType.Custom: if (LogDelegate != null) { LogDelegate(msg); } break; default: break; } } }