5. FreeBSD 10.4 RELEASE/postgreSQL/ログの設定

 
5.1 /usr/local/pgsql/data/postgres.conf の設定
5.2 フォルダとファイルの作成
5.3 出力の確認
5.4 ログローテーションの設定

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

 特に指定していなければ、postgreSQL のログは /var/log/messages とコンソールへ出力されます。  これをログファイルに出力させるには
/usr/local/pgsql/data/postgres.conf
 を編集します。  編集によって、出力先や動作を指定することができます。  root ユーザから postgres ユーザになって編集します。  ログの指定方法は、バージョンによって違いがあるようなので、詳細は「Let's Postgres ログ関連の設定」を参考にしてください。  10.0 では、以下のように設定します。(あくまでわたしの設定例)  ログの出力先を syslog から stderr に変更します。

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
 ログの出力先を /var/log/postgres というディレクトリにします。

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

log_directory = '/var/log/postgres'     # directory where log files are written,
 ファイル名を postgresql.log とします。

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

log_filename = 'postgresql.log'              # log file name pattern,
 ローテーションは、newsyslog で制御する予定なので、下記はコメントのままとします。

#log_rotation_age = 1d                  # Automatic rotation of logfiles will
 ログの先頭に出力時刻とプロセスIDをつけます。

#log_line_prefix = '%m [%p] '                   # special values:
  

log_line_prefix = '%m [%p] '                   # special values:

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

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

> mkdir /var/log/postgres
> touch /var/log/postgres/postgresql.log
> chown -Rv postgres:postgres /var/log/postgres
/var/log/postgres/postgresql.log
/var/log/postgres

5.3 出力の確認

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

> /usr/local/etc/rc.d/postgresql restart
2017-10-16 18:12:13.826 JST [50162] LOG:  listening on IPv6 address "::", port 5432
2017-10-16 18:12:13.826 JST [50162] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2017-10-16 18:12:13.829 JST [50162] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2017-10-16 18:12:13.839 JST [50162] LOG:  redirecting log output to logging collector process
2017-10-16 18:12:13.839 JST [50162] HINT:  Future log output will appear in directory "/var/log/postgres".
 ログの中身を確認してみますと

2017-10-16 18:12:13.842 JST [50164] LOG:  database system was shut down at 2017-10-16 18:12:13 JST
2017-10-16 18:12:13.845 JST [50162] LOG:  database system is ready to accept connections
 という具合に出力されています。

5.4 ログローテーションの設定

 ログローテーションの設定を /usr/local/pgsql/data/postgres.conf で行うこともできるのですが、FreeBSD ですから newsyslog で行いましょう。
/usr/local/etc/newsyslog.conf.d/postgres.conf
 を作成して

# logfilename                    [owner:group]      mode count size when  flags [/pid_file] [sig_num]
/var/log/postgres/postgresql.log  postgres:postgres 644  9     100  *     -
 ローテーションの間隔やサイズは、出力量に合わせて調整します。