web-dev-qa-db-ja.com

ログファイル "/var/log/postgresql-2015-05-24_181212.log"を開けませんでした:権限が拒否されました

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に変更します。サーバーを起動すると、正常に動作します。しかし、ログファイルは動的にしたいです。指定したサイズになったら、古いものを圧縮して、現在の日時で新しいものを作成します。

2
Donato

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/

5