PM2-如何从日志文件名中删除标识符

时间:2019-05-02 15:13:57

标签: javascript logging pm2

我正在尝试从日志文件名中删除服务标识符。

示例:

我的ecosystem.config.js如下:

module.exports = {
  apps : [
    {
        name: "My Service",
        script: "./app.js",
        watch: true,
        max_memory_restart: "150M",
        error: "/var/log/pm2/my-service.log",
        out: "/var/log/pm2/my-service.log",
        max_restarts: 10
    }
  ]
}

然后,我希望有一个名为/var/log/pm2/my-service.log的日志文件。

但这就是它生成的:/var/log/pm2/my-service-4.log

我正在使用pm2版本3.5.0,我刚刚从版本2.10.4升级了

节点版本:v8.16.0

更新1:

我也尝试过使用不同的参数,例如merge_logs,这是该版本的示例:

module.exports = {
  apps : [
    {
        name: "My Service",
        script: "./app.js",
        watch: true,
        max_memory_restart: "150M",
        error: "/var/log/pm2/my-service.log",
        out: "/var/log/pm2/my-service.log",
        max_restarts: 10,
        merge_logs: true
    }
  ]
}

更新2:

好像是pm2,它完全忽略了我在erroroutput选项中设置的内容。 我尝试将这些选项更改为error_fileout_file,然后用pm2 reloadLogs重新加载日志,但是没有用。

2 个答案:

答案 0 :(得分:1)

看起来您正在为应用程序使用日志后缀。参见pm2 documentation here

  

您可以通过启用选项app-name-ID.log来禁用日志(例如merge_logs: true)上的自动ID后缀

因此,您的环境文件应如下所示:

module.exports = {
  apps : [
    {
        name: "My Service",
        script: "./app.js",
        watch: true,
        max_memory_restart: "150M",
        error: "/var/log/pm2/my-service.log",
        out: "/var/log/pm2/my-service.log",
        max_restarts: 10,
        merge_logs: true
    }
  ]
}

答案 1 :(得分:0)

我已经找到解决方案了。

看起来pm2正在缓存生态系统文件,并且一旦启动它就完全忽略文件上的更改。

要使pm2重新加载所有配置,您必须删除所有服务并重新启动它们。

这就是我所做的:

pm2 delete all
pm2 startOrRestart ecosystem.config.js

这样做之后,它重新加载了配置,并开始写入正确的文件。