Winston记录器 - 是否可以记录应用程序的关闭

时间:2016-07-28 10:09:23

标签: logging docker winston

在Winston logger for node js中,是否可以记录节点应用程序的关闭?例如,如果节点应用程序在docker中运行,并且docker容器被终止,是否可以使用winston进行记录?或者我需要通过docker登录吗?

1 个答案:

答案 0 :(得分:1)

您可以在node.js中capture signal events并运行any code on that signal,在您的情况下运行日志记录。

SIGTERM - 在nodejs中正常关闭

docker stop将发送SIGTERM信号,这是标准'关闭所有文件和连接并停止发送到* nix进程的程序'信号。您可能也希望以相同的方式处理SIGINT(ctrl-c发送此信息)。

process.on('SIGTERM', function() {  
  winston.log('Got a SIGTERM, exiting');
  process.exit(1);
});

SIGKILL - 不是那么优雅的杀人

docker kill上的docker stop或超时会发送SIGKILL。你无法从node.js中捕获SIGKILL,因为这是内核“杀死它并且不提问题”最后摆脱过程。要捕获一些日志以获取kill,您需要查看docker日志或其他一些外部监视/日志记录,因为kills可以来自任何地方(例如kill -9命令或内核中的Out of Memory管理器。) / p>

组合应用程序和Docker日志

如果他们都登录到中心位置,您可以使用与docker logging driver匹配的Winston transport将泊坞日志与应用日志结合使用。 SyslogGraylog(gelf)和Fluentd是开源日志收集器,可以从两者中使用。