Supervisord 中的日志轮换

Supervisord 中的日志轮换

我在supervisord中设置了几个程序。他们将输出发送到标准输出,然后使用supervisord将其转发到文件。 Supervisord 中有一个 logrotation 函数,但问题是它使用“root”帐户创建新文件,而我的程序(通过supervisord 使用用户帐户运行)无法在那里写入。是否可以设置一个用户,用于在轮换后创建新文件?

答案1

我认为你弄错了你的程序的问题(或者可能没有很好地描述问题)

Supervisord 正在做的是为程序创建一个要写入的管道(stdout 和 stderr),然后supervisord 读取该管道并写入日志文件。换句话说,程序永远不会因为自身的权限问题而无法写入stdout。唯一可能发生的权限问题是supervisord 本身无法打开新的日志文件。

如果您只需要特定帐户可以访问日志,您可以尝试将日志文件放入启用了 set-gid 位的目录中,并确保 systemd 的 umask 允许组读取(或写入)权限。

相关内容