Как удалить / освободить память, выделенную для регистратора NLog - PullRequest
1 голос
/ 04 февраля 2020

Требуется создать один файл журнала для каждого задания, и несколько заданий могут выполняться одновременно.

Я реализовал это с помощью NLog, создав новую цель, новый регистратор и новое правило для задания. Когда у меня есть тысячи запущенных и выполняемых заданий в разное время, как я могу избежать утечек памяти со всеми дополнительными ресурсами ведения журнала, выделенными для задания (средство ведения журнала / правило / цель)? Есть ли способ удалить регистраторы?

1 Ответ

1 голос
/ 04 февраля 2020

У вас не будет проблем с утечкой объекта Logger, поскольку NLog содержит только слабые ссылки. Таким образом, сборщик мусора может собирать все объекты NLog Logger, которые не поддерживаются ссылками на объекты в приложении.

Но вам, вероятно, придется удалить динамически создаваемые NLog-цели. Вы можете использовать этот метод для удаления именованной цели:

NLog.LogManager.Configuration.RemoveTarget("myRandomTargetName");

Вышеуказанный метод был улучшен в NLog 4.5, поэтому его можно использовать в активном объекте LoggingConfiguration.

См. также: https://nlog-project.org/documentation/v4.5.0/html/M_NLog_Config_LoggingConfiguration_RemoveTarget.htm

...