public override void Log(string name, string val, MessagePriority priority = MessagePriority.Low)
{
lock (Sync)
{
try
{
ReportSystemInfo();
}
catch (Exception exc)
{
Log(exc);
}
if (_messages.Count >= MaxMessagesCount)
{
_messages.RemoveAll(message => message.Priority == MessagePriority.Low);
AddMessage(WarningName, "Message queue overflow. Some messages are skipped.", MessagePriority.High);
if (_messages.Count >= MaxMessagesCount) // too much high-priority messages
{
_messages.Clear();
AddMessage(ErrorName, "Critical message queue overflow. All messages are removed.", MessagePriority.High);
}
}
AddMessage(name, val, priority);
}
}