【问题标题】:NodeJs deployment on cPanel: Missing Passenger.log and stderr.log filescPanel 上的 NodeJs 部署:缺少 Passenger.log 和 stderr.log 文件
【发布时间】:2021-12-29 19:56:45
【问题描述】:
我已将我的 NodeJs 应用程序部署在两个不同的共享 Web 托管服务器上。第一个自动生成stderr.log 文件并有一个passenger 文件。但是,第二台服务器没有,因此我无法看到部署错误。我在网上查看过,但找不到任何可以解决我的问题的方法。我也联系了服务器的客户服务,但他们不是很有帮助。请告诉我如何创建stderr.log 或passenger.log 文件!非常感谢!
【问题讨论】:
标签:
node.js
deployment
cpanel
web-deployment
logfile
【解决方案1】:
必须将以下内容添加到启动文件中(例如app.js)才能生成错误日志。不需要在其他服务器提供商上执行此操作,因为这是他们系统中的默认设置。
var fs = require('fs');
var util = require('util');
var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags : 'w'});
var log_stdout = process.stdout;
var log_stderr = process.stderr;
console.log = function(d) { //
log_file.write(util.format(d) + '\n');
log_stdout.write(util.format(d) + '\n');
log_stderr.write(util.format(d) + '\n');
};
// var out = fs.openSync('./output.log', 'a')
// , err = fs.openSync('./error.log', 'a');
// require('child_process').spawn('./server', [], {
// detached : true,
// stdio : ['ignore', out, err]
// });
var access = fs.createWriteStream(__dirname + '/stdout.log', {flags : 'w'});
process.stdout.write = process.stderr.write = access.write.bind(access);
process.on('uncaughtException', function(err) {
console.error((err && err.stack) ? err.stack : err);
});