コード例 #1
0
        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();
        }