如何删除/释放分配给NLog记录器的内存

问题描述 投票:1回答:1

要求是为每个作业创建一个日志文件,并且可以同时运行多个作业。

我已经通过NLog实现了这一点,方法是为每个作业创建一个新的目标,新的记录器和新规则。当我有数千个作业在不同时间运行并完成时,如何通过每个作业分配的所有额外日志资源(记录器/规则/目标)来避免内存泄漏?有没有办法删除记录器?

c# .net logging nlog
1个回答
1
投票

您不会因为泄漏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

© www.soinside.com 2019 - 2024. All rights reserved.