【问题标题】:Pm2 changing log file locationpm2 更改日志文件位置
【发布时间】:2018-02-07 17:59:10
【问题描述】:

我有几个关于 pm2 的问题

  • 如何更改server-error-0.log 的位置和 server-out-0.log文件位置从c:\users\user\.pm2\logs到其他驱动器,由于服务器的C盘访问限制。
  • 我可以在数据库而不是日志文件中记录错误和信息吗?我需要为此编写一个单独的模块还是有什么方法可以实现?

【问题讨论】:

    标签: node.js pm2 npm-start


    【解决方案1】:

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

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

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

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

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

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

      module.exports = {
        apps : [{
          name   : "app1",
          script : "./app.js"
        }]
      }
      
    2. 在文件中定义error_file(用于错误日志)和out_file(用于信息日志),如:

      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

    详情请参考document

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

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

    【讨论】:

    • 感谢您的及时回复
    • 嗨,不幸的是,这不适用于 pm2 logrotate 例如...
    • 如果你使用参数解决方案记得用pm2 delete 删除pid
    【解决方案2】:

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

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

    pm2 delete <pid>
    

    【讨论】:

    • thx 伙计,你刚刚为我节省了一个小时的 WTF WTF WTF :) pm2 delete all -> 然后重新开始
    • 在过去的 30 分钟里,我经历了很多 WTF,希望我之前在 google 上搜索过。此详细信息应包含在接受的答案中。
    【解决方案3】:

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

    1. pm2 全部删除
    2. pm2 启动生态系统.js
    3. pm2 保存
    4. pm2 启动

    【讨论】:

      【解决方案4】:

      如果你想将错误日志和控制台日志写入同一个文件,可能是一个用例,比如我有兴趣登录 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>
      

      【讨论】:

        猜你喜欢
        • 2015-04-15
        • 2015-07-22
        • 2018-10-12
        • 1970-01-01
        • 2019-09-13
        • 2016-07-06
        • 2019-04-18
        • 2016-07-08
        • 1970-01-01
        相关资源
        最近更新 更多