patternsqlMinor
In Postgres, set log_rotation_size but my logs are still not rotating
Viewed 0 times
rotatinglogspostgresarebutlog_rotation_sizestillnotset
Problem
I’m using Postgres 9.5 on Ubuntu 14.04. I wanted to rotate my logs whenever they reach a certain size. So I edited /etc/postgresql/9.5/main/postgresql.conf and set this
Then I restarted my server
However after running some operations, I ran out of disk space, and discovered my log had not rotated at all …
What else do I need to do to get the log rotation to kick in?
log_rotation_size = 50MB # Automatic rotation of logfiles will
# happen after that much log output.
# 0 disables.Then I restarted my server
sudo /etc/init.d/postgresql restartHowever after running some operations, I ran out of disk space, and discovered my log had not rotated at all …
myuser@mymachine:~$ ls -al /var/log/postgresql/postgresql-9.5-main.log
-rw-r----- 1 postgres postgres 3165773943 Dec 29 18:34 /var/log/postgresql/postgresql-9.5-main.logWhat else do I need to do to get the log rotation to kick in?
Solution
In Debian/Ubuntu, per policy it's the
From https://www.debian.org/doc/debian-policy/ch-files.html :
Log files must be rotated occasionally so that they don't grow
indefinitely. The best way to do this is to install a log rotation
configuration file in the directory /etc/logrotate.d, normally named
/etc/logrotate.d/package, and use the facilities provided by
logrotate.
So there is a
On the other hand, should you want to use the PostgreSQL feature to achieve this, as opposed to the pre-configured method of the OS, you need to consider all logging parameters in
https://www.postgresql.org/docs/current/static/runtime-config-logging.html
log_rotation_size (integer)
When logging_collector is enabled, this parameter determines the maximum size of an individual log file. After this many kilobytes have
been emitted into a log file, a new log file will be created. Set to
zero to disable size-based creation of new log files. This parameter
can only be set in the postgresql.conf file or on the server command
line.
logrotate package that is in charge of handling log rotation and purge for all services, PostgreSQL included.From https://www.debian.org/doc/debian-policy/ch-files.html :
Log files must be rotated occasionally so that they don't grow
indefinitely. The best way to do this is to install a log rotation
configuration file in the directory /etc/logrotate.d, normally named
/etc/logrotate.d/package, and use the facilities provided by
logrotate.
So there is a
/etc/logrotate.d/postgresql-common configuration file that can be tuned to rotate log files when they grow over a size given by the size keyword , among a lot of other options.On the other hand, should you want to use the PostgreSQL feature to achieve this, as opposed to the pre-configured method of the OS, you need to consider all logging parameters in
postgresql.conf, not just log_rotation_size. First a Debian/Ubuntu packaged PostgreSQL will turn off logging_collector to not interfere with logrotate, but most of log_* options depend on it to be effective, as mentioned in the doc, for instance:https://www.postgresql.org/docs/current/static/runtime-config-logging.html
log_rotation_size (integer)
When logging_collector is enabled, this parameter determines the maximum size of an individual log file. After this many kilobytes have
been emitted into a log file, a new log file will be created. Set to
zero to disable size-based creation of new log files. This parameter
can only be set in the postgresql.conf file or on the server command
line.
Context
StackExchange Database Administrators Q#159528, answer score: 6
Revisions (0)
No revisions yet.