FreeBSD 13.2 RELEASE - postgreSQL - ログの設定

 クラウディア
1. 概要
2. /var/db/postgres/data14/postgresql.conf の設定
3. フォルダとファイルの作成
4. 出力の確認

1. 概要

 バージョン「8.4」あたりから、「PostgreSQL」のログは、だいぶ使いやすくなっています。

2. /var/db/postgres/data14/postgresql.conf の設定


/var/db/postgres/data14/postgresql.conf
 で出力先や動作を指定することができます。  コンフィグレーションファイルの編集の際は気を付けて、所有者が「postgres:postgres」から変わらないようにします。  「root」ユーザで編集して所有者が、「root:wheel」になったりすると、「PortgreSQL」起動時に読み込めなくて、えらいことになります。

sudo -u postgres vim /var/db/postgres/data14/postgresql.conf
 で編集しましょう。  「postgreSQL」のコンフィグレーションファイルはすべてこのやり方で編集します。  ログの指定方法は、バージョンによって違いがあるようなので、詳細は「Let's Postgres ログ関連の設定」を参考にしてください。

/var/log/postgresql/postgresql.log
 というファイルに出力させ、1日ずつローテーションさせることとしますと

log_destination = 'syslog'
#log_destination = 'stderr'             # Valid values are combinations of
 を

#log_destination = 'syslog'
log_destination = 'stderr'             # Valid values are combinations of
 に変えます。以下、矢印で・・・。

#logging_collector = off                # Enable capturing of stderr and csvlog
   ↓

logging_collector = on                  # Enable capturing of stderr and csvlog

#log_directory = '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 = '%m [%p] '           # special values:
   ↓

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

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

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

mkdir -pv /var/log/postgresql
touch /var/log/postgresql/postgresql.log
chown -R postgres:postgres /var/log/postgresql

4. 出力の確認

 「PortgreSQL」を再起動して、ログを確認します。  「root」ユーザ権限で。

service postgresql restart
 前回まで、起動時に表示されていたメッセージが

2023-06-01 09:13:11.786 JST [31811] LOG:  ending log output to stderr
2023-06-01 09:13:11.786 JST [31811] HINT:  Future log output will go to log destination "syslog".
 ものが

2023-06-01 09:29:34 JST LOG:  redirecting log output to logging collector process
2023-06-01 09:29:34 JST HINT:  Future log output will appear in directory "/var/log/postgresql".
 に変わりました。  ログの中身を確認してみます。

tail /var/log/postgresql/postgresql.log
 下記のようになっています。

2023-06-01 09:29:34 JST LOG:  starting PostgreSQL 14.8 on amd64-portbld-freebsd13.2, compiled by FreeBSD clang version 14.0.5 (https://github.com/llvm/llvm-project.git llvmorg-14.0.5-0-gc12386ae247c), 64-bit
2023-06-01 09:29:34 JST LOG:  listening on IPv6 address "::1", port 5432
2023-06-01 09:29:34 JST LOG:  listening on IPv4 address "127.0.0.1", port 5432
2023-06-01 09:29:34 JST LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2023-06-01 09:29:34 JST LOG:  database system was shut down at 2023-06-01 09:29:34 JST
2023-06-01 09:29:34 JST LOG:  database system is ready to accept connections
 なるほど、「postgresql12」で表示していたメッセージの多かったものは、ログにのみ表示されているわけだ。  ログの出力は、意図通りになりました。
earthcar(アースカー)