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