Don*_*ato 2 postgresql logs configuration
我在 Ubuntu 14.04 上从源代码安装了 postgresql(我之前也从存储库安装过,我现在只想感受一下它们,因为我将严重依赖这个数据库)。因此,当我从源代码安装时,在我的 postgresql.conf 中,我指定我希望 postmaster 可执行文件中的所有标准错误都转到 /var/log:
log_destination = 'stderr'
logging_collector = on
log_directory = '/var/log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
Run Code Online (Sandbox Code Playgroud)
我知道只有 root 可以写入 /var/log(这是 Ubuntu 上的默认设置),那么人们是如何做到这一点的呢?如何在该日志文件存在之前使其可写?还是人们先手动创建日志文件然后更改其权限?
不幸的是,我的临时解决方案是对 log_filename 的文件名进行硬编码,例如 postgresql-9.4.2-main.log,然后以 root 身份在 /etc/log 中创建该文件,然后将其所有权更改为 postgres,然后当我启动服务器它工作正常。但我希望日志文件是动态的。在达到指定大小后,我希望将旧的压缩起来,并使用当前日期和时间创建一个新的。
我知道只有 root 可以写入 /var/log ...
你可以改变它。作为shell 中的root用户(或 with sudo):
mkdir /var/log/postgresql
chmod 0700 /var/log/postgresql
chown postgres:postgres /var/log/postgresql
Run Code Online (Sandbox Code Playgroud)
并在postgresql.conf:
log_destination = 'stderr'
logging_collector = on
log_directory = '/var/log/postgresql'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_rotation_age = '1d' # That's what makes it "dynamic"
Run Code Online (Sandbox Code Playgroud)
Depesz 有一篇关于该主题的详细文章:https ://www.depesz.com/2011/05/06/understanding-postgresql-conf-log/