在Winston logger for node js中,是否可以记录节点应用程序的关闭?例如,如果节点应用程序在docker中运行,并且docker容器被终止,是否可以使用winston进行记录?或者我需要通过docker登录吗?
答案 0 :(得分:1)
您可以在node.js中capture signal events并运行any code on that signal,在您的情况下运行日志记录。
docker stop
将发送SIGTERM
信号,这是标准'关闭所有文件和连接并停止发送到* nix进程的程序'信号。您可能也希望以相同的方式处理SIGINT
(ctrl-c发送此信息)。
process.on('SIGTERM', function() {
winston.log('Got a SIGTERM, exiting');
process.exit(1);
});
docker kill
上的docker stop
或超时会发送SIGKILL
。你无法从node.js中捕获SIGKILL
,因为这是内核“杀死它并且不提问题”最后摆脱过程。要捕获一些日志以获取kill,您需要查看docker日志或其他一些外部监视/日志记录,因为kills可以来自任何地方(例如kill -9
命令或内核中的Out of Memory管理器。) / p>
如果他们都登录到中心位置,您可以使用与docker logging driver匹配的Winston transport将泊坞日志与应用日志结合使用。 Syslog,Graylog(gelf)和Fluentd是开源日志收集器,可以从两者中使用。