using System; using System.Text; namespace Apewer.Models { /// 日志条目。 [Serializable] public sealed class LogItem { /// 自定义日志条目格式化程序。 public static Func Formatter { get; set; } /// 日志记录程序。 public Logger Logger { get; internal set; } /// 记录日志的时间。 public DateTime Clock { get; private set; } /// 日志的标签。 public string Tag { get; internal set; } /// 日志的文本内容。 public object[] Content { get; internal set; } /// 日志中包含的异常对象。 public Exception Exception { get; internal set; } /// internal LogItem() { Clock = DateTime.Now; } /// public override string ToString() { var formatter = Formatter; if (formatter != null) return formatter.Invoke(this); var sb = new StringBuilder(); var written = 0; sb.Append(ClockUtility.Lucid(Clock)); written++; if (!string.IsNullOrEmpty(Tag)) { sb.Append(" ["); sb.Append(Tag); sb.Append("]"); written++; } if (Exception != null) { sb.Append(" <"); sb.Append(Exception.GetType().Name); sb.Append("> "); sb.Append(Exception.Message()); written++; } if (Content != null && Content.Length > 0) { var content = TextUtility.Join(" | ", Content); if (!string.IsNullOrEmpty(content)) { if(written > 1) sb.Append(" | "); else sb.Append(" "); sb.Append(content); } } return sb.ToString(); } } }