我正在尝试从日志文件名中删除服务标识符。
示例:
我的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,它完全忽略了我在error
和output
选项中设置的内容。
我尝试将这些选项更改为error_file
和out_file
,然后用pm2 reloadLogs
重新加载日志,但是没有用。
答案 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
这样做之后,它重新加载了配置,并开始写入正确的文件。