Создание 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));
}
}