我正在尝试使用一个文件来保存所有日志,所以我要使用
来启动我的应用pm2 start app --merge-logs -l --log "~/webapps/infranodus/infranodus/infralogpm2.log"
该应用程序启动,但文件中没有任何内容,仅创建了标准日志。
我试图touch
创建文件,但这也无济于事。
答案 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
和以下所述的其他组合形式运行应用程序。
--merge-logs
对于单个实例是不需要的。根据{{1}},它说:“合并来自不同实例的日志,但保持错误并分开”。尽管就我而言,STDOUT和STDERR都出现在所需的日志文件中,带有和不带有pm2 --help
选项。
--merge-logs
和-l
都不应使用。理想情况下,按照Unix命令行参数约定,您应该只使用其中之一。但是,就我而言,它只能像您建议的那样--log
起作用。
作为计数器检查的一部分,运行--log
。它会生成两个文件,分别来自pm2 start ./bin/app2 --output /var/tmp/sample-app2-stdout.log --error /var/tmp/sample-app2-error.log
和console.log
的输出。
对于您的情况,建议您检查存储日志文件的分区上是否有足够的磁盘空间,然后执行console.error
,然后重试。
如果这不能解决问题,是否可以共享示例代码和重现问题的确切步骤?