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'
Rootのみが/ var/logに書き込むことができることを知っています(Ubuntuのデフォルトです)。そのログファイルが存在する前に、どのようにして書き込み可能にすることができますか?または、最初に手動でログファイルを作成してから、そのアクセス許可を変更していますか?
残念ながら、私の一時的な解決策は、ファイル名をハードコーディングすることです。 log_filenameのpostgresql-9.4.2-main.logを取得し、rootとして/ etc/logにそのファイルを作成し、所有権をpostgresに変更します。サーバーを起動すると、正常に動作します。しかし、ログファイルは動的にしたいです。指定したサイズになったら、古いものを圧縮して、現在の日時で新しいものを作成します。
Rootだけが/ var/logに書き込めることを知っています...
あなたはそれを変えることができます。シェルでroot
ユーザーとして(またはSudo
を使用して):
mkdir /var/log/postgresql
chmod 0700 /var/log/postgresql
chown postgres:postgres /var/log/postgresql
そして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"
Depeszはこのトピックに関する詳細な記事を持っています:
https://www.depesz.com/2011/05/06/understanding-postgresql-conf-log/