Я пробовал несколько проверок RHEL 7.4 с использованием NodeJS 10.15 и PM2 3.2.4 и следуя коду HelloWorld ExpressJS.
var http = require("http");
http.createServer(function (request, response) {
// Send the HTTP header
// HTTP Status: 200 : OK
// Content Type: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// Send the response body as "Hello World"
response.end('Hello World\n');
}).listen(8081);
// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');
console.error('This is on STDERR');
Предполагается, что приведенный выше код находится в файле ./bin/app2
, а необходимые модули присутствуют в node_modules
,
Я запустил приложение как pm2 start ./bin/app2 --merge-logs -l --log /var/tmp/sample-app2.log
и другие комбинации, описанные ниже.
--merge-logs
не требуется для одного экземпляра.Согласно pm2 --help
, в нем говорится "объединяйте журналы из разных экземпляров, но сохраняйте ошибки и не разделяйте их"Хотя в моем случае, STDOUT и STDERR, оба появились в желаемом файле журнала, с опцией --merge-logs
и без нее.
-l
и --log
не должны использоваться.В идеале, вы должны были использовать только один из них в соответствии с соглашениями об аргументах командной строки Unix.Тем не менее, в моем случае это сработало так, как вы предлагали, а также только с --log
.
В рамках встречной проверки выполнялось pm2 start ./bin/app2 --output /var/tmp/sample-app2-stdout.log --error /var/tmp/sample-app2-error.log
.Он генерирует два файла с выходными данными console.log
и console.error
соответственно.
В вашем случае я предлагаю вам проверить, достаточно ли свободного дискового пространства на разделе, где хранится файл журнала,и выполните pm2 delete app
, а затем повторите попытку.
Если это не решает проблему, возможно ли поделиться примером кода и точными шагами для воспроизведения проблемы?