PostgreSQLのエラーログ出力
今までsyslogに吐いていましたが、ローテーションがsyslog任せになってしまうので標準出力させてみました。postgresql.confを修正。環境はPostgreSQL8.1.11。
●とりあえず標準ログ出力。 log_destination = 'stderr' ●標準出力用の設定。標準出力のリダイレクトをONにする。 redirect_stderr = on ●リダイレクトしたログのファイル出力先ディレクトリを設定する。 このディレクトリはDBユーザーの権限で作成すること。 log_directory = '/var/log/postgresql' ●1週間でローテーションする時はログファイル名を***.曜日で作成する。 log_filename = 'postgresql.log.%a' ●同名のファイルが存在する時は上書きする。ローテーション用。 log_truncate_on_rotation = on ●1日でログファイルを切り替える。 log_rotation_age = 1440 ●ログフォーマット。カンマ区切りで表示。 log_line_prefix = '%t,%h,%u,%d,%l,'
ログのサンプル
2008-03-13 05:00:38 JST,,,,1,LOG: database system was shut down at 2008-03-13 05:00:36 JST 2008-03-13 05:00:38 JST,,,,2,LOG: checkpoint record is at 0/33A844 2008-03-13 05:00:38 JST,,,,3,LOG: redo record is at 0/33A844; undo record is at 0/0; shutdown TRUE 2008-03-13 05:00:38 JST,,,,4,LOG: next transaction ID: 585; next OID: 10794 2008-03-13 05:00:38 JST,,,,5,LOG: next MultiXactId: 1; next MultiXactOffset: 0 2008-03-13 05:00:38 JST,,,,6,LOG: database system is ready 2008-03-13 05:00:38 JST,,,,7,LOG: transaction ID wrap limit is 2147484146, limited by database "postgres" 2008-03-13 05:00:38 JST,,,,1,LOG: autovacuum: processing database "postgres" 2008-03-13 05:00:48 JST,,[unknown],[unknown],1,LOG: connection received: host=[local] 2008-03-13 05:00:48 JST,[local],postgres,postgres,2,LOG: connection authorized: user=postgres database=postgres 2008-03-13 05:02:54 JST,,[unknown],[unknown],1,LOG: connection received: host=[local] 2008-03-13 05:02:54 JST,[local],postgres,postgres,2,LOG: connection authorized: user=postgres database=postgres
フォーマットの指定をしないとログが使いにくいですね。簡単にCSV形式に設定できるのは楽と言えば楽かも知れません。それから、ローテーションが同名ファイルだったら上書き・・だけなのが辛いですね。もっと良い設定があるのかも知れないので調査中。