Я пытаюсь использовать NLog для регистрации некоторых вещей в нашей системе. Это очень сложная система, многопоточность с очередями сообщений в разных местах.NLog - Расширение Nlog - callsite - dispose()
Нам нужно было расширить NLog для регистрации некоторых других предметов, которые нам нужны. После расширения NLog мы обнаружили, что информация о вызывающем сайте была неправильной. Некоторые поиски в Stack дали мне решение. Моя забота о том, что с продолжением, которое мы выполнили (передавая TypeName), мы могли бы иметь несколько сотен экземпляров журнала, и у меня плохое ощущение, что это будет очень быстро восстановлено.
Я не вижу метод удаления для NLog, поэтому я не знаю, как сбор мусора возьмет это.
Если у меня есть 100 классов, каждый из которых работает на разных потоках, обрабатывая 1000 транзакций в секунду, и каждый из них регистрирует и создает новый экземпляр журнала, я вижу проблемы в будущем.
Я открыт для предложений. Пожалуйста, дайте мне знать, если это будет проблемой, и если да, то возможные решения?
EDIT: Добавление кода: - Вот 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);
}
}
Да, вы правы. Но я расширяю nLog, поэтому у меня есть базовый класс. Я должен передать тип базовому классу для правильного вызова. – bugnuker
Я не понимаю, в чем проблема. Почему у вас будет несколько сотен журнальных экземпляров? Объявление вашего регистратора аналогично тому, как я иллюстрирую выше (с учетом того факта, что вы подклассифицировали регистратор), в вашем приложении должен быть один экземпляр регистратора для каждого класса. Итак, если у вас есть 1 класс (который имеет регистратор как статический член), и вы создаете 100 экземпляров класса, у вас будет только один экземпляр регистратора. Можете ли вы опубликовать некоторый код, показывающий, как вы объявляете и создаете регистратор в своих классах? – wageoghe
добавлен код оригинального вопроса – bugnuker