【问题标题】:How to delete/free up memory allocated to an NLog logger如何删除/释放分配给 NLog 记录器的内存
【发布时间】:2020-05-19 16:50:40
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net logging nlog


    【解决方案1】:

    泄漏 Logger 对象不会有任何问题,因为 NLog 只保存弱引用。因此,垃圾收集器可以收集所有未通过应用程序中的对象引用保持活动状态的 NLog Logger 对象。

    但是您可能必须删除动态创建的 NLog 目标。您可以使用此方法删除命名目标:

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

    上述方法已在 NLog 4.5 中进行了改进,因此可以在活动的 LoggingConfiguration-object 上使用。

    另请参阅:https://nlog-project.org/documentation/v4.5.0/html/M_NLog_Config_LoggingConfiguration_RemoveTarget.htm

    【讨论】:

    • 这一切都清楚了,谢谢!适用于垃圾收集记录器和已删除目标的规则是否也会被删除?
    • @ame Nope 未使用的日志记录规则不会自动删除。 NLog 4.6 允许您创建可以再次删除的命名记录规则:nlog-project.org/documentation/v4.6.0/html/…
    猜你喜欢
    • 2019-03-23
    • 2011-01-08
    • 2011-03-29
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多