CentOS 5.x postgresql-server 8.1 ログにタイムスタンプを付ける
パッケージのデフォルトではPostgreSQLのログは下記の場所に記録される。
/var/lib/pgsql/data/pg_log/postgresql-XXX.log
XXXはログの記録された日の曜日 Sun Mon Tue ... Sat
したがってログは1週間で上書きされる。
デフォルトではログのメッセージに日時が付かない。
/var/lib/pgsql/data/postgresql.conf の log_line_prefix の設定で
%t で タイムスタンプ(ミリ秒なし)を付加できる。
/var/lib/pgsql/data/postgresql.conf に以下を記述。
log_line_prefix = '%t '
設定を再読み込み。
# service postgresql reload
タイムスタンプが付くようになった。
# tail /var/lib/pgsql/data/pg_log/postgresql-Sat.log ERROR: syntax error at or near "VALUES" at character 1 LOG: autovacuum: processing database "stock" LOG: received SIGHUP, reloading configuration files ← 設定の再読み込みしている 2015-07-04 21:02:26 JST LOG: autovacuum: processing database "postgres" ← ここからタイムスタンプが付く 2015-07-04 21:03:26 JST LOG: autovacuum: processing database "test" 2015-07-04 21:04:26 JST LOG: autovacuum: processing database "testdb" ...
デフォルトでは log_line_prefix は未設定になっていて コメントに%1文字の特別な値の説明が書いてある。
#log_line_prefix = '' # Special values: # %u = user name # %d = database name # %r = remote host and port # %h = remote host # %p = PID # %t = timestamp (no milliseconds) # %m = timestamp with milliseconds # %i = command tag # %c = session id # %l = session line number # %s = session start timestamp # %x = transaction id # %q = stop here in non-session # processes # %% = '%' # e.g. '<%u%%%d> '