Table of Contents

Создание ILogListener

Если необходимо создать свою реализацию ILogListener (например, когда требуется сохранять сообщения в базе данных), то можно или унаследоваться от класса LogListener или напрямую реализовать интерфейс ILogListener. Через метод ILogListener.WriteMessages(System.Collections.Generic.IEnumerable<StockSharp.Logging.LogMessage> messages ) передается объект класса LogMessage. Данный класс содержит информацию об источнике сообщения LogMessage.Source (например, стратегия, которая сгенерировала сообщение), тип сообщения LogMessage.Level (информация, предупреждение или ошибка), а также сам текст LogMessage.Message. Ниже в качестве примера приведен код класс EmailLogListener:

/// <summary>
/// Логгер, отсылающий данные на email. 
/// </summary>
public class EmailLogListener : LogListener
{
	/// <summary>
	/// Создать <see cref="EmailLogListener"/>.
	/// </summary>
	/// <param name="from">Адрес, от имени которого будет отправлено сообщение.</param>
	/// <param name="to">Адрес, куда будет отправлено сообщение.</param>
	public EmailLogListener(string from, string to)
	{
		if (from.IsEmpty())
			throw new ArgumentNullException("from");
		if (to.IsEmpty())
			throw new ArgumentNullException("to");
		From = from;
		To = to;
	}
	/// <summary>
	/// Адрес, от имени которого будет отправлено сообщение.
	/// </summary>
	public string From { get; private set; }
	/// <summary>
	/// Адрес, куда будет отправлено сообщение.
	/// </summary>
	public string To { get; private set; }
	/// <summary>
	/// Записать сообщение.
	/// </summary>
	/// <param name="message">Отладочное сообщение.</param>
	protected override void OnWriteMessage(LogMessage message)
	{
		var email = new SmtpClient();
		email.Send(new MailMessage(From, To, message.Source.Name + " " + message.Level, message.Message));
	}
}