Невозможно объединить стандарт и журнал ошибок в PM2 - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь получить один файл, в котором сохранен весь журнал, поэтому я запускаю свое приложение, используя

pm2 start app --merge-logs -l --log "~/webapps/infranodus/infranodus/infralogpm2.log"

приложение запускается, но в этом файле ничего нет, только стандартные журналысоздал.

Я пытался touch создать файл, но это тоже не помогло.

1 Ответ

0 голосов
/ 01 марта 2019

Я пробовал несколько проверок 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 и другие комбинации, описанные ниже.

  1. --merge-logs не требуется для одного экземпляра.Согласно pm2 --help, в нем говорится "объединяйте журналы из разных экземпляров, но сохраняйте ошибки и не разделяйте их"Хотя в моем случае, STDOUT и STDERR, оба появились в желаемом файле журнала, с опцией --merge-logs и без нее.

  2. -l и --log не должны использоваться.В идеале, вы должны были использовать только один из них в соответствии с соглашениями об аргументах командной строки Unix.Тем не менее, в моем случае это сработало так, как вы предлагали, а также только с --log.

  3. В рамках встречной проверки выполнялось 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, а затем повторите попытку.

Если это не решает проблему, возможно ли поделиться примером кода и точными шагами для воспроизведения проблемы?

...