自定义 ILogListener

如果你想创建自己的 ILogListener 实现(例如,当你想将消息保存到数据库中时),可以继承 LogListener 类或直接实现 ILogListener 接口。LogMessage 类的对象通过 ILogListener.WriteMessages(System.Collections.Generic.IEnumerable<Ecng.Logging.LogMessage> messages ) 方法传递。该类包含有关消息源 LogMessage.Source(例如,生成消息的策略)、消息类型 LogMessage.Level(信息、警告或错误)以及 LogMessage.Message 文本本身的信息。以下示例显示了 EmailLogListener 的源代码:

/// <summary>
public class EmailLogListener : LogListener
{
	public EmailLogListener(string from, string to)
	{
		if (from.IsEmpty())
			throw new ArgumentNullException("from");
		if (to.IsEmpty())
			throw new ArgumentNullException("to");
		From = from;
		To = to;
	}
	public string From { get; private set; }
	public string To { get; private set; }
	protected override void OnWriteMessage(LogMessage message)
	{
		var email = new SmtpClient();
		email.Send(new MailMessage(From, To, message.Source.Name + " " + message.Level, message.Message));
	}
}