「log_line_prefix」では、各行の先頭に付与するプレフィックスを設定できます。初期状態では何も設定されていません。「%から始まるエスケープシーケンス(*1)」を設定することで、各ステータス情報に置き換えられます。
例えば、「%t」はタイムスタンプ、「%u」はデータベースのユーザー名、「%d」はデータベース名、「%p」はOSのPID、「%l」は各セッション、プロセスごとのログ行番号となります。
(*1)参考リンク:%から始まるエスケープシーケンス
# su - <PostgreSQLをインストールしたOSユーザー名>
$ pg_ctl reload
> pg_ctl reload
ここまでの設定によって、出力されるログファイルは以下のように変わります(例2)。
LOG: received SIGHUP, reloading configuration files [2015-08-30 20:36:22 JST] 2727[5]LOG: parameter "log_line_prefix" changed to "[%t]%u %d %p[%l]" [2015-08-30 20:40:26 JST]testuser postgres 3414[1]ERROR: relation "test" does not exist <-- [2015-08-30 20:40:26 JST]testuser postgres 3414[2]STATEMENT: create index test_ind on test(no);
例2のログファイルでは、情報が足りなかった例1のログファイルと比べると、エラーが発生した項目に対する詳細な情報も記録されるようになりました。
得られた情報から、このエラーメッセージは、「testuser」ユーザーが「postgres」データベース内には存在しない「test」表に対して索引を作成しようとしたために発生したことが分かります。ここまで取得しておけば、トラブルシューティングに役立つはずです。
Copyright © ITmedia, Inc. All Rights Reserved.