温斯顿logging器 – 是否有可能loggingclosures的应用程序

在Winston日志logging节点js中,是否可以loggingclosures节点应用程序? 例如,如果节点应用程序在docker中运行,并且docker容器被终止,是否可以使用winston来login? 还是我需要通过dockerlogin?

您可以捕获 node.js中的信号事件 ,并在该信号上运行任何代码 ,在您的情况下logging。

SIGTERM – 在nodejs中正常closures

docker stop会发送一个SIGTERM信号,这就是发送到* nix进程的标准“closures所有文件和连接并停止程序”的信号。 你可能也想以同样的方式处理一个SIGINT (一个ctrl-c发送这个)。

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

SIGKILL – 不那么优美的杀死

docker stopdocker stop上的超时会发送一个SIGKILL 。 你不能从node.js捕获一个SIGKILL ,因为这是内核“杀了它,不问问题”,最后的办法是摆脱一个过程。 为了捕获一些日志来杀死你需要查看docker日志,或者其他一些外部监视/日志logging,因为任何地方都可能发生kill -9 (例如kill -9命令或者内核的Out Of Memorypipe理器)。

结合应用程序和Docker日志

您可以通过使用与您的Winston交通工具相匹配的docker日志logging驱动程序(如果它们都logging到中央位置)将泊坞窗日志与应用程序日志结合起来。 Syslog , Graylog (gelf)和Fluentd是开源的日志收集器,可以同时使用。