You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.1 KiB
81 lines
2.1 KiB
using System;
|
|
using System.Text;
|
|
|
|
namespace Apewer.Models
|
|
{
|
|
|
|
/// <summary>日志条目。</summary>
|
|
[Serializable]
|
|
public sealed class LogItem
|
|
{
|
|
|
|
/// <summary>自定义日志条目格式化程序。</summary>
|
|
public static Func<LogItem, string> Formatter { get; set; }
|
|
|
|
/// <summary>日志记录程序。</summary>
|
|
public Logger Logger { get; internal set; }
|
|
|
|
/// <summary>记录日志的时间。</summary>
|
|
public DateTime Clock { get; private set; }
|
|
|
|
/// <summary>日志的标签。</summary>
|
|
public string Tag { get; internal set; }
|
|
|
|
/// <summary>日志的文本内容。</summary>
|
|
public object[] Content { get; internal set; }
|
|
|
|
/// <summary>日志中包含的异常对象。</summary>
|
|
public Exception Exception { get; internal set; }
|
|
|
|
/// <summary></summary>
|
|
internal LogItem()
|
|
{
|
|
Clock = DateTime.Now;
|
|
}
|
|
|
|
/// <summary></summary>
|
|
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();
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|