FreeBSD 11.0 RELEASE - postgreSQL - ログの設定

クラウディア 
 「Let's Postgres ログ関連の設定」に有用なことが書いてありますので、参考にちょっとやってみます。
1. いきさつ
2. /usr/local/pgsql/data/postgres.conf の設定
3. フォルダとファイルの作成
4. 出力の確認

1. いきさつ

 バージョン 8.4 くらいからだったでしょうか。  PortgreSQL の起動直後に

LOG:  ending log output to stderr
HINT:  Future log output will go to log destination "syslog".
 というメッセージが出力されるようになりまして。ERRORWARNING ではないのですがちょっと気になっていました。  英語文盲なのもので「よくわからんなぁ」と思っていましたが、まさにログに関するメッセージだったのですね。

2. /usr/local/pgsql/data/postgres.conf の設定

 「PortgreSQL」のログは、だいぶ使いやすくなっているようで、

/usr/local/pgsql/data/postgres.conf
 で出力先や動作を指定することができます。  コンフィグレーションファイルの編集の際は気を付けて、所有者が pgsql:pgsql であることを確認します。 root ユーザで編集して所有者が root:wheel になったりすると PortgreSQL 起動時に読み込めなくて、えらいことになったりします。  ログの指定方法は、バージョンによって違いがあるようなので、詳細は「Let's Postgres ログ関連の設定」を参考にしてください。  わたしは 9.4 で確認しています。  さて、/var/log/pgsql/pgsql.log というファイルに出力させ、1日ずつローテーションさせることとしますと

log_destination = 'syslog'
#log_destination = 'stderr'
 を

#log_destination = 'syslog'
log_destination = 'stderr'
 に変えます。以下、矢印で・・・。

#logging_collector = off                # Enable capturing of stderr and csvlog
  

logging_collector = on                  # Enable capturing of stderr and csvlog

#log_directory = 'pg_log'               # directory where log files are written,
  

log_directory = '/var/log/pgsql'        # directory where log files are written,

#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'        # log file name pattern,
  

log_filename = 'pgsql.log'              # log file name pattern,
 これは、ローテーションの具合をみて書き換えるかも・・・。

#log_rotation_age = 1d                  # Automatic rotation of logfiles will
  

log_rotation_age = 1d                   # Automatic rotation of logfiles will
 1日ごとにローテーションさせます。  ローテーションは newsyslog.conf に書いてそちらで制御させようかとも思ったのですが、ファイルの所有権の問題がややこしそうなので、当面こちらで・・・。

#log_line_prefix = ''                   # special values:
  

log_line_prefix = '%t '                 # special values:
 とりあえず、先頭に出力時刻だけつけるようにします。  後ろにセパレータの空白か何かをいれないと後続のメッセージとくっついて出力されちゃいます。

3. フォルダとファイルの作成

 初回出力用にフォルダとファイルを作成します。

mkdir /var/log/pgsql
touch /var/log/pgsql/pgsql.log
chown -R pgsql:pgsql /var/log/pgsql

4. 出力の確認

 PortgreSQL を再起動して、ログを確認します。

/usr/local/etc/rc.d/postgresql restart
2016-11-12 15:22:48 JST LOG:  redirecting log output to logging collector process
2016-11-12 15:22:48 JST HINT:  Future log output will appear in directory "/var/log/pgsql".
 をを、メッセージも変わったじゃないの。  ログの中身を確認してみますと

2016-11-12 15:22:48 JST LOG:  MultiXact member wraparound protections are now enabled
2016-11-12 15:22:48 JST LOG:  database system is ready to accept connections
2016-11-12 15:22:48 JST LOG:  autovacuum launcher started
 意図通りになったので、なんかちょっとうれしい。
ハイスピードプラン