5. FreeBSD 11.2 RELEASE - postgreSQL - ログの設定

 
5.1 概要
5.2 /var/db/postgres/data96/postgresql.conf の設定
5.3 フォルダとファイルの作成
5.4 出力の確認

5.1 概要

 「Let's Postgres ログ関連の設定」に有用なことが書いてありますので、参考にちょっとやってみます。  バージョン 8.4 くらいからだったでしょうか。  PortgreSQL の起動直後に

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

5.2 /var/db/postgres/data96/postgresql.conf の設定

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

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

/var/log/postgresql/postgresql.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/postgresql'   # directory where log files are written,

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

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

#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:
 とりあえず、先頭に出力時刻だけつけるようにします。  後ろにセパレータの空白か何かをいれないと後続のメッセージとくっついて出力されちゃいます。

5.3 フォルダとファイルの作成

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

プロンプト略
mkdir /var/log/postgresql
touch /var/log/postgresql/postgresql.log
chown -R postgres:postgres /var/log/postgresql

5.4 出力の確認

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

> service 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/postgresql".
 をを、メッセージも変わったじゃないの。  ログの中身を確認してみますと

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
 意図通りになったので、なんかちょっとうれしい。