public void Write(Type type, eLoggerLevel level, string sMessage, object[] args) { int iLevel = (int)level; if ((iLevel & m_iAllowedLevels) > 0) { try { LoggerRecord record = new LoggerRecord(type, level, sMessage, args); m_sqMessages.Enqueue(record); } catch (Exception excp) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ExcpHelper.FormatException(excp, "LiveLog.WriteConsole('{0}') ERROR", m_sLogleFilePath)); } } }
protected void LoggerThread(ThreadContext tc) { FileInfo fi = new FileInfo(m_sLogleFilePath); StringBuilder sb = new StringBuilder(); try { while (!tc.IsToStop) { if (fi.Exists && fi.Length > m_lMaxSize) { string sExtension = Path.GetExtension(m_sLogleFilePath); string sNewFileName = string.Format("{0}.backup__{1:dd-MMM-yyyy__HH-mm-ss}{2}.", m_sLogleFilePath, DateTime.Now, sExtension); File.Move(m_sLogleFilePath, sNewFileName); } using (StreamWriter sw = new StreamWriter(m_sLogleFilePath, true)) { while (!tc.IsToStop) { if (m_sqMessages.Count > 0) { LoggerRecord record = m_sqMessages.Dequeue(); sb.AppendFormat("{0} {1:dd-MMM-yyyy HH:mm:ss.ffffff} ", record.LoggerLevel, record.Time); if (record.Args != null && record.Args.Length > 0) { sb.AppendFormat(record.Message, record.Args); } else { sb.Append(record.Message); } sb.Append("\r\n"); sw.Write(sb.ToString()); sw.Flush(); } sb.Clear(); fi.Refresh(); if (fi.Length > m_lMaxSize) { break; } Thread.Sleep(1); } } } } catch (Exception excp) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(ExcpHelper.FormatException(excp, "LiveLog.WriteConsole('{0}') ERROR", m_sLogleFilePath)); } }