protected void AddToLastLine(LogItem li) { while (LastLines.Count >= MaxCountLastLines) LastLines.RemoveAt(LastLines.Count - 1); LastLines.Insert(0, li); }
private void ShowLine(LogItem li) { string strk = "{0} {1} {2} {3}".goFormat(li.TimeStamp.ToString(DateTimeFormat), li.Level, li.Source, li.Desc); Console.WriteLine(strk); if (li.Level != LogLevel.llEcho) { try { using (StreamWriter sw = new StreamWriter(new FileStream( System.IO.Path.Combine(Path, "{0}-{1:yyyy-MM}.log".goFormat(Name, DateTime.Now)), FileMode.Append, FileAccess.Write, FileShare.Read))) { sw.WriteLine(strk); } } catch { } } }
protected void AddLine(LogLevel level, string Source, bool toCascade, string Desc) { lock (this) { LogItem li = new LogItem(Desc, level, Source); if (Dispatcher.CurrentDispatcher != Dispatcher && Dispatcher != null) this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new AddLine(AddToLastLine), li); //this.Dispatcher.Invoke(DispatcherPriority.Normal, TimeSpan.FromSeconds(3), new AddLine(AddToLastLine), li); else AddToLastLine(li); ShowLine(li); } if (toCascade) foreach (var item in cascade) item.AddLine(level, Source, Desc); }