Я пытаюсь использовать NLog для регистрации некоторых вещей в нашей системе.Это очень сложная система, многопоточность с очередями сообщений в разных местах.
Нам нужно было расширить NLog, чтобы регистрировать некоторые другие элементы так, как нам нужно.После расширения NLog мы обнаружили, что информация о месте вызова неверна.Некоторые поиски в стеке дали мне решение.Теперь я обеспокоен тем, что с расширением, которое мы сделали (передав TypeName), у нас может быть несколько сотен экземпляров журнала, и у меня плохое предчувствие, что это будет очень быстро скопировано.
Я не вижуметод dispose для NLog, так что я не знаю, как сборщик мусора поднимет это.
Если у меня есть 100 классов, каждый из которых работает в разных потоках, обрабатывающих 1000 транзакций в секунду, и каждая из них ведет журнал иСоздавая новый экземпляр журнала, я вижу проблемы в своем будущем.
Я открыт для предложений.Пожалуйста, дайте мне знать, если это даже будет проблемой, и если да, возможные решения?
РЕДАКТИРОВАТЬ: Добавление кода: - Вот ExtenderClass (принимает имя класса)
private readonly Logger _logger;
public NLogLogger(Type t)
{
_logger = LogManager.GetLogger(t.FullName);
}
public void Trace(string message, string systemUserID, string transactionID, string description)
{
if (_logger.IsTraceEnabled)
{
Write(LogLevel.Trace, message, systemUserID, transactionID, description);
}
}
Вот класс, который использует его: - Этот класс будет создаваться для каждой задачи потока, поэтому, возможно, 500 в занятой день.
public class ThreadTask : TaskBase
{
private readonly NLogLogger _logger = new NLogLogger(typeof(ThreadTask));
public Method(string val)
{
_logger.Trace(message);
}
}