web-dev-qa-db-ja.com

古いpostgresqlログファイルの削除(Ubuntu)

PostgresqlデータベースをホストしているUbuntuマシンでは、16Gのスペースが/var/lib/postgresql/9.3/main/pg_logで占められています。どうやら、何ヶ月も前のログファイルも保存されているようです。 disk fullエラーを取り除くために、いくつかを手動で削除しました。毎週古いpostgresqlログを削除する強力な方法は何ですか?このプロセスを自動化するためにpostgresql.confでできることはありますか?

現在、私はpostgresql.confに以下を持っています:

#log_truncate_on_rotation = off         # If on, an existing log file with the
                                        # same name as the new log file will be
                                        # truncated rather than appended to.
                                        # But such truncation only occurs on
                                        # time-driven rotation, not on restarts
                                        # or size-driven rotation.  Default is
                                        # off, meaning append to existing files
                                        # in all cases.
#log_rotation_age = 1d                  # Automatic rotation of logfiles will
                                        # happen after that time.  0 disables.
log_rotation_size = 100MB               # Automatic rotation of logfiles will
                                        # happen after that much log output.
                                        # 0 disables.

log_rotation_ageを有効にし、その値を30dに設定することを考えています。しかし、これは古いログファイルを自動的に削除しますか?

5
Hassan Baig

以下の設定を使用できます。

log_truncate_on_rotation = on
log_rotation_age = 1d
log_filename = 'postgresql-%a.log'
log_rotation_size = 0  #just rotate daily

これは、「postgresql-Mon.log」のような名前のログファイルを作成し、ローテーションが発生したときに同じ名前の古いファイルを上書きすることを示しています。

6
Sahap Asci

PostgreSQLはログローテーション機能をサポートしていますが、ログ削除機能はサポートしていません。そのため、ユーザーはログを手動で削除するか、logrotateユーティリティを使用してログを削除する必要があります。

これが 公式ドキュメント です。

1
shx