我有一个连续运行的标准Ubuntu postgres9.1安装,我可能不会阻止它。
没有专门针对日志记录目标进行配置, 所以有一个(以某种方式旋转) logfile /var/log/postgresqlpostgresql-9.1-main.log。 我想,它抓住了流程的标准输出。
我想要的是配置不同的文件目标,并且无需重启 (对不起,没有收藏家,没有系统日志......那些需要重启的人) 但是通过重新配置,新的子进程使用了该文件。
这可能吗? 谢谢。
答案 0 :(得分:4)
我相信这相对简单。遗憾的是,它确实需要使用日志记录收集器,这需要重新启动才能启用。没有它,你就无法在分区之间移动日志。
您可以配置使用的日志:
/etc/postgresql/<version>/<cluster>/postgresql.conf
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log
更改此设置后,您需要执行service postgresql reload
以获取更改。
也许我应该在此明确指出,这个答案的重点是你可以在不重启服务器的情况下使用service postgresql reload
。
答案 1 :(得分:0)
我修改了之前的答案,因为DanielVérité指出,如果不使用logging_collector
就无法设置日志文件,log_filename
选项将被忽略。
通过“copy-truncate”完成旋转。那就是logrotate制作文件的副本然后清空主日志文件。
在这种情况下,我认为你会很幸运,因为服务器打开了日志的文件句柄,只使用那个写入。这意味着您只需重命名文件mv old_name.log new_name.log
即可。 postgresql使用的文件句柄绑定到文件本身而不是名称。
此解决方案确实带有重新启动服务器时的问题,它将在旧名称下创建一个新的日志文件。您需要进行配置更改,以便在重新启动时继续写入同一位置。