public void Log(QLog.LogData logData) { lock (this.mLogLock) { this.mWaitingLogQueue.Enqueue(logData); Monitor.Pulse(this.mLogLock); } }
void WriteLog() { while (this.mIsRunning) { if (this.mWritingLogQueue.Count == 0) { lock (this.mLogLock) { while (this.mWaitingLogQueue.Count == 0) { Monitor.Wait(this.mLogLock); } Queue <QLog.LogData> tmpQueue = this.mWritingLogQueue; this.mWritingLogQueue = this.mWaitingLogQueue; this.mWaitingLogQueue = tmpQueue; } } else { while (this.mWritingLogQueue.Count > 0) { QLog.LogData log = this.mWritingLogQueue.Dequeue(); if (log.Level == QLog.LogLevel.ERROR) { this.mLogWriter.WriteLine("------------------------------------------------------ERROR----------------------------------------------------------"); this.mLogWriter.WriteLine(System.DateTime.Now.ToString() + "\t" + log.Log + "\n"); this.mLogWriter.WriteLine(log.Track); this.mLogWriter.WriteLine("---------------------------------------------------------------------------------------------------------------------"); } else if (log.Level == QLog.LogLevel.WARNING) { this.mLogWriter.WriteLine("------------------------------------------------------WARNING--------------------------------------------------------"); this.mLogWriter.WriteLine(System.DateTime.Now.ToString() + "\t" + log.Log + "\n"); this.mLogWriter.WriteLine(log.Track); this.mLogWriter.WriteLine("---------------------------------------------------------------------------------------------------------------------"); } else { this.mLogWriter.WriteLine(System.DateTime.Now.ToString() + "\t" + log.Log + "\n"); } } } } }