3

標準のUbuntupostgres9.1インストールを継続的に実行していますが、停止できない場合があります。

ロギングターゲットに関して特に設定されているものはないため、(何らかの形でローテーションする)ログファイル/var/log/postgresqlpostgresql-9.1-main.logがあります。私は、それがプロセスの標準的な出力をつかむと思います。

私が欲しいのは、別のファイルターゲットを構成し、再起動せずに(申し訳ありませんが、コレクターなし、syslogなし...再起動が必要です)、再構成すると、新しい子プロセスがそのファイルを使用しました。

それは可能ですか?ありがとうございました。

4

2 に答える 2

4

これは比較的簡単だと思います。残念ながら、ログコレクターを使用する必要があり、有効にするには再起動が必要になります。それがないと、パーティション間でログを移動することはできません。

次の場所で使用するログを構成できます。 /etc/postgresql/<version>/<cluster>/postgresql.conf

log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log

これを変更したら、変更service postgresql reloadを取得するためにを実行する必要があります。

おそらく、ここで明確にする必要があります。この回答のポイントはservice postgresql reload、サーバーを再起動せずに使用できるということです。

于 2012-07-02T21:32:33.947 に答える
0

DanielVéritéが指摘したように、を使用せずにログファイルを設定することはできないため、以前の回答を変更しました。logging_collectorこのlog_filenameオプションは無視されます。

ローテーションは「コピー-切り捨て」によって行われます。つまり、logrotateはファイルのコピーを作成してから、メインログファイルを空にします。

この場合、サーバーがログへのファイルハンドルを開き、そのハンドルだけを使用して書き込みを行うという点で、幸運だと思います。これは、ファイルの名前を簡単に変更できることを意味しますmv old_name.log new_name.log。postgresqlが使用するファイルハンドルは、名前ではなくファイル自体にバインドされます。

この解決策には、サーバーを再起動すると、古い名前で新しいログファイルが作成されるという問題があります。再起動したときに同じ場所に書き込みを続けるように、構成を変更する必要があります。

于 2012-07-03T08:01:52.600 に答える