public static void WriteLog(string logText, bool debug, bool error) { var previousLED = StatusLED.GetColor(); if (error) { StatusLED.SetColor(true, false, false); } else if (debug) { StatusLED.SetColor(false, true, true); } var currentLED = StatusLED.GetColor(); string logLine = ""; if (_logFileInfo == null || _logFileInfo.Name != LogFileName()) { _logFileInfo = new FileInfo(LogFileName()); if (_logWriter != null) { _logWriter.Flush(); _logWriter.Close(); } if (!_logFileInfo.Exists) { _logWriter = new StreamWriter(_logFileInfo.Create()); } else { _logWriter = new StreamWriter(_logFileInfo.OpenWrite()); } } if (!error) { if (!debug) { logLine = string.Format("{0} - INFO - {1}", DateTime.Now, logText); } else { logLine = string.Format("{0} - DEBUG - {1}", DateTime.Now, logText); } } else { logLine = string.Format("{0} - ERROR - {1}", DateTime.Now, logText); } _logWriter.WriteLine(logLine); _logWriter.Flush(); Console.WriteLine(logLine); Thread colorThread = new Thread(new ThreadStart(delegate() { Thread.Sleep(500); if (currentLED == StatusLED.GetColor()) { StatusLED.SetColor(previousLED); } })); colorThread.Start(); }