要求是为每个作业创建一个日志文件,并且可以同时运行多个作业。
我已经通过NLog实现了这一点,方法是为每个作业创建一个新的目标,新的记录器和新规则。当我有数千个作业在不同时间运行并完成时,如何通过每个作业分配的所有额外日志资源(记录器/规则/目标)来避免内存泄漏?有没有办法删除记录器?
您不会因为泄漏Logger对象而遇到任何问题,因为NLog仅包含弱引用。因此,允许垃圾收集器收集所有未使用应用程序中的对象引用保持活动的NLog Logger对象。
但是您可能必须删除动态创建的NLog目标。您可以使用此方法删除命名目标:
NLog.LogManager.Configuration.RemoveTarget("myRandomTargetName");
以上方法已通过NLog 4.5进行了改进,因此可以在活动的LoggingConfiguration对象上使用。