20

I have couple of questions regarding pm2

  • How can I change the location of server-error-0.log and server-out-0.log files location from c:\users\user\.pm2\logs to other drive, due to restriction in server's c drive access.
  • Can I log the error and info in database instead of a log file? Do I need to write a separate module for that or is there any way to achieve this?
4

4 回答 4

35

如何更改...日志文件位置的位置?

要更改 pm2 的日志文件位置,有两种解决方案:在执行 pm2 命令时将日志路径定义为参数(-l, -o, -e),或者从配置文件启动 pm2。

对于参数解决方案,这里是一个示例:

pm2 start app.js -o ./out.log -e ./err.log

如果不想每次执行 pm2 时都定义日志路径,可以生成一个配置文件,定义error_fileand out_file,然后从中启动 pm2:

  1. 生成配置文件:pm2 ecosystem simple. 这将生成一个文件ecosystem.config.js,其内容如下:

    module.exports = {
      apps : [{
        name   : "app1",
        script : "./app.js"
      }]
    }
    
  2. 在文件中定义error_file(for error log)和out_file(for info log),如:

    module.exports = {
      apps : [{
        name   : "app1",
        script : "./app.js",
        error_file : "./err.log",
        out_file : "./out.log"
      }]
    }
    
  3. 删除 pm2 中的现有进程:

    pm2 delete <pid>
    

    您可以通过以下方式获取 pid:

    pm2 status
    
  4. 从配置文件启动进程:

    pm2 start ecosystem.config.js
    

这样,日志将保存到./err.log./out.log

有关详细信息,请参阅文档

我可以在数据库而不是日志文件中记录错误和信息吗?

我在官方文档中没有找到任何资源。看来您需要自己编写代码并将日志保存到数据库。

于 2017-08-30T07:57:50.237 回答
18

只是想添加到@shaochuancs 答案,在执行第 3 步之前,请确保删除旧进程。如果您不删除旧流程,则您对流程文件所做的更改将不会在您启动应用程序后生效。

在执行上述第 3 步之前,您需要发出此命令:

pm2 delete <pid>
于 2017-10-05T19:00:07.427 回答
0

如果您想将错误日志和控制台日志都写入同一个文件,可能是一个用例,就像我有兴趣登录 OneFile 以推送到 ELK。您可以使用-l

-l --log [path]              specify filepath to output both out and error logs

这是示例

pm2 start server.js -l /app/logs/server.log

进行更改后,请不要忘记按照答案中所述运行此命令。

pm2 delete <pid>
于 2019-07-24T10:47:36.177 回答
0

如果您希望 pm2 在启动时更改日志路径:

  1. pm2 全部删除
  2. pm2 启动生态系统.js
  3. pm2 保存
  4. pm2 启动
于 2019-06-17T08:54:28.443 回答