选项 #1 - 最常见
只需像这样运行您的脚本/服务器:
node ./my-server.js >/path/to/logs/my-server.log 2>&1
然后去尾...
tail -f /path/to/logs/my-server.log
注意:对于生产,您可能还想使用 logrotate 之类的东西。
选项 #2 - 对于黑客
无论您在哪里使用process.stdout.write(msg) 或console.log(msg),都可以使用process.emit('logger#receiver-id', JSON.stringify({content: msg}))
// sample.js
function doSomething() {
// console.log('Hello world');
var msg = 'Hello World !';
process.emit('logger#catch-all', JSON.stringify({content: msg}))
}
doSomething();
// tail.js
function onPayload(payload) {
var msg = JSON.parse(payload).content;
process.stdout.write(msg);
}
function registerEvent() {
process.on('logger#catch-all', onPayload);
}
registerEvent();
然后你现在可以通过运行(首先)tail.js,然后运行sample.js
此方法只是您可以通过将日志视为事件来执行的操作的一个示例...然后您可以编写自己的容器并根据日志的去向格式化有效负载:标准输出、文件、监控工具...
如果您不想直接使用process.emit(...),则可能必须覆盖console.<method>()。