在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配置和一些小贴士