【发布时间】:2014-09-15 08:40:07
【问题描述】:
我已经尝试过实例化和关闭winston 记录器,如https://github.com/flatiron/winston#instantiating-your-own-logger 中描述的(一半),但无济于事。我在关闭 Winston 的文件传输时遇到了麻烦 - 浏览它的源代码,我发现关闭记录器的正确方法似乎是 close 方法。我希望这能够关闭记录器使用的传输文件 - 但事实并非如此。
根据 node.js 服务器负载的频率变化,winston 仍会保留许多传输文件,在为它们调用 close 方法之后无限长的时间,在没有新的写入启动之后无限长的时间。我通过 node.js 进程文件描述符表(lsof -p)观察到这一点。即使 close 已被调用用于 Winston 记录器,它也会无限期地保持日志文件的文件描述符“正在使用”,即日志文件永远不会真正关闭。因此,在我的应用程序运行很长时间后,文件描述符泄漏并最终使 node.js 进程碰到了 ulimit (-n) 限制。
是否应该有一种特定的编程模式来排空 Winston 记录器,以便最终将其关闭?
【问题讨论】: