无法合并PM2中的标准和错误日志

时间:2019-02-18 08:38:07

标签: logging pm2

我正在尝试使用一个文件来保存所有日志,所以我要使用

来启动我的应用
pm2 start app --merge-logs -l --log "~/webapps/infranodus/infranodus/infralogpm2.log"

该应用程序启动,但文件中没有任何内容,仅创建了标准日志。

我试图touch创建文件,但这也无济于事。

1 个答案:

答案 0 :(得分:1)

我在使用NodeJS 10.15和PM2 3.2.4并遵循HelloWorld ExpressJS代码的RHEL 7.4上进行了几次尝试。

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对于单个实例是不需要的。根据{{​​1}},它说:“合并来自不同实例的日志,但保持错误并分开”。尽管就我而言,STDOUT和STDERR都出现在所需的日志文件中,带有和不带有pm2 --help选项。

  2. --merge-logs-l都不应使用。理想情况下,按照Unix命令行参数约定,您应该只使用其中之一。但是,就我而言,它只能像您建议的那样--log起作用。

  3. 作为计数器检查的一部分,运行--log。它会生成两个文件,分别来自pm2 start ./bin/app2 --output /var/tmp/sample-app2-stdout.log --error /var/tmp/sample-app2-error.logconsole.log的输出。

对于您的情况,建议您检查存储日志文件的分区上是否有足够的磁盘空间,然后执行console.error,然后重试。

如果这不能解决问题,是否可以共享示例代码和重现问题的确切步骤?