在logrotate中管理PostgreSQL日志的设置

由于 PostgreSQL 的日志轮换似乎无法设置旋转文件的数量,因此需要使用 logrotate 进行配置管理。
将配置方法记录下来作为备忘。

设定的过程

    • PostgreSQLのログをsyslogに流す設定

 

    • syslogのログ出力設定

 

    logrotateのローテションの設定

输出文件的位置

/var/log/postgresql/postgresql.log

将PostgreSQL的日志传输到syslog的设置

配置文件。

vim /usr/local/pgsql/data/postgresql.conf

将log_destination设置为syslog。

log_destination = 'syslog'  

设备设置(与syslog的协同操作所需)

syslog_facility = 'LOCAL1'

设置在日志输出开头显示的格式

log_line_prefix = '[database:%d][user:%u]'  

%d:数据库名称
%u:访问用户名称

输出所有日志

log_statement = 'all'                   # none, ddl, mod, all

将postgresql.conf的配置应用

执行 SELECT pg_reload_conf()

su postgres
/usr/local/pgsql/bin/psql 

postgres=# SELECT pg_reload_conf();
 pg_reload_conf 
----------------
 t
(1 row)

syslog日志输出设置

设置文件

 vim /etc/rsyslog.conf

我们将添加以下内容

# postgres
local1.*                                                /var/log/postgresql/postgresql.log

重新启动

/etc/init.d/rsyslog restart

logrotate的循环设置

配置文件

增加以下的设定文件

touch /etc/logrotate.d/postgresql 

以下补充

/var/log/postgresql/*.log {
  daily
  compress
  delaycompress
  notifempty
  copytruncate
  missingok
  create 0640 postgres root
  rotate 30
}

logrotate的配置生效

sudo logrotate /etc/logrotate.conf 

确认日志是否已经输出

tail -f -n 100 /var/log/postgresql/postgresql.log

参考网站

将执行的 PostgreSQL SQL 输出到日志中(系统整体设置)。
请参考链接:https://www.kakiro-web.com/postgresql/postgresql-sql-log-system.html

在 PostgreSQL 中,应该至少配置以下日志相关参数和附加项+α。

在logrotate中管理PostgreSQL的方法
https://www.postgresql.jp/document/9.1/html/logfile-maintenance.html

用于日志切割的logrotate配置和一些小贴士

广告
将在 10 秒后关闭
bannerAds