7

私のmac os x開発マシンには、postgres 9.1がインストールされて/Library/PostgreSQL/9.1おり、PostgreSQLのデータディレクトリがあります。/Library/PostgreSQL/9.1/dataログを構成しているので、サーバーで実行されているSQLクエリについてpostgresから適切なログを取得します....などこれらは/Library/PostgreSQL/9.1/data/pg_log、エンタープライズ db の事前にパッケージ化された postgres バイナリを使用しています。

問題は、postgres プロセスを実行している postgres ユーザーが $PGDATA を所有していることです。postgres を使用してデータ ディレクトリのアクセス許可を変更すると、chmod o+xr data開始が拒否され、postgres ユーザー以外のアクセス許可を持つ postgres ディレクトリでは開始できないことが通知されます。

FATAL:  data directory "/Library/PostgreSQL/9.1/data" has group or world access
DETAIL:  Permissions should be u=rwx (0700)

ログファイルを取得するためだけにpostgresディレクトリに出入りする必要があるのは面倒です。

sudo を使用したり、postgres ユーザーになる必要がなく、ログインしているすべてのユーザーからログ ファイルに簡単にアクセスできるように、Mac OS X で postgres ログを構成する良い方法は何ですか?

更新それを機能させるために使用した正確なレシピについては、以下の私の回答を参照してください。

4

2 に答える 2

11

単純な事実は、PostgreSQL ではこれを行うことができないということです。ただし、postgresql.conf に以下が設定されていることを確認するという、より良い解決策があります。

これがデフォルトです。コメントアウトされていて、特に設定されていない場合は問題ありません。

log_destination = 'stderr' 

これは次のように設定する必要があります:

logging_collector = on  

その後、これを別の場所に向けることができます。

log_directory = 'pg_log'  

アクセスできる場所にこれを指定できます。たとえば、postgres に適切なアクセス権を付与し、次を指すようにします。

log_directory = '/var/log/postgresql'

次に、データ ディレクトリにない限り、必要なアクセス許可を設定できます。

于 2013-03-11T02:04:21.617 に答える
7

私がそれを機能させるために使用した手順。

  • ディレクトリ/var/pg_logを作成し、誰でも読み取りおよび書き込み可能にするchmod o+wxr
  • postgresql.confファイルに以下の値を設定します

    log_directory ='/ var / pg_log'

    log_file_mode = 0506

  • postgresを再起動します

  • /var/pg_logmac os x、コンソールユーティリティで監視できるpostgres.logファイルが必要です。そこで何が起こっているかを確認するためにsudoは必要ありません。

注Postgresは、ログファイルで511を超える許可を許可することを拒否しました。

于 2013-03-11T03:05:09.933 に答える