Kohei Nozaki's blog 

ログ出力の設定をしてみる


Posted on Sunday Feb 02, 2014 at 10:43AM in Technology


環境

  • PostgreSQL 9.2.4
  • OS X 10.9.1

何をするか

  • OS XのsyslogをPostgreSQLからのログ出力を受け入れられるように設定する
  • PostgreSQLのログをsyslogへ出力するようにする
  • 実行されるSQLのログを取ってみる

OS Xのsyslogの設定

/etc/syslog.confを編集する

一番下の行を追加する。こんな感じ。flat file logsは/etc/asl.confに設定されているとか書かれているのでそっちに書いた方がいいのかもしれないけど面倒なのでここで

# Note that flat file logs are now configured in /etc/asl.conf

install.*                                               @127.0.0.1:32376
local0.*                                                /var/log/postgresql

設定内容を反映させる

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

こんなんでもよい

ps -Af | awk '/\/usr\/sbin\/syslogd$/{print "sudo kill -HUP " $2}' | sh

ログを出力してみる

kyle-no-MacBook:etc kyle$ logger -p local0.notice hogehoge
kyle-no-MacBook:etc kyle$ ls -l /var/log/postgresql 
-rw-r--r--@ 1 root  wheel  58  2  2 10:55 /var/log/postgresql
kyle-no-MacBook:etc kyle$ cat /var/log/postgresql 
Feb  2 10:55:06 kyle-no-MacBook.local kyle[880]: hogehoge
kyle-no-MacBook:etc kyle$ 

ちゃんと出ていますね。「コンソール」からも内容を見られるのは便利かも

PostgreSQLの設定

$PG_HOME/data/postgresql.confを編集

sudo su postgres -c 'vi /Library/PostgreSQL/9.2/data/postgresql.conf'

以下内容にする

log_destination = 'syslog'
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'
log_statement = 'all' 

一番下がSQLをログに出す設定。大量に出るので要注意

再起動

sudo su postgres -c 'pg_ctl -D /Library/PostgreSQL/9.2/data restart'

ログを見てみる

kyle-no-MacBook:~ kyle$ psql
Password: 
psql (9.2.4)
Type "help" for help.

kyle=# select now();
             now              
------------------------------
 2014-02-02 11:32:20.67332+09
(1 row)

kyle=# \q
kyle-no-MacBook:~ kyle$ cat /var/log/postgresql.log 
Feb  2 11:20:21 kyle-no-MacBook.local kyle[1002]: hogehogehoge
Feb  2 11:31:24 kyle-no-MacBook.local postgres[1073]: [1-1] 2014-02-02 11:31:24 JST LOG:  database system was shut down at 2014-02-02 11:31:23 JST
Feb  2 11:31:24 kyle-no-MacBook.local postgres[1077]: [1-1] 2014-02-02 11:31:24 JST LOG:  autovacuum launcher started
Feb  2 11:31:24 kyle-no-MacBook.local postgres[1071]: [1-1] 2014-02-02 11:31:24 JST LOG:  database system is ready to accept connections
Feb  2 11:31:30 kyle-no-MacBook.local postgres[1083]: [2-1] 2014-02-02 11:31:30 JST LOG:  incomplete startup packet
Feb  2 11:32:20 kyle-no-MacBook.local postgres[1098]: [2-1] 2014-02-02 11:32:20 JST LOG:  statement: select now();
kyle-no-MacBook:~ kyle$ 

出てますね

その他

できればSQLのログはシビリティをdebugとかにしたいので若干調べた[6]が、よくわからん。現状無理ということだろうか

参考文献

  1. Linux管理者への道(3):システム管理の基礎 syslogdの設定をマスターしよう (2/3) - @IT
  2. ログ関連の設定 — Let's Postgres
  3. 第10回Mac OS X Server勉強会 Mac OSXシステム管理 読書会「ログ」 - サイト更新停滞ちうっ
  4. 新世代syslogデーモン徹底活用(1):syslogdの限界と次世代シスログデーモン (1/3) - @IT
  5. PostgreSQL/PostgreSQLでSQLステートメントをログファイルに出力する方法 - 調べる.db
  6. [GENERAL] log_statement and syslog severity - Google グループ



No one has commented yet.

Leave a Comment

HTML Syntax: NOT allowed