ActiveRecordでSQLのログを取る
※Railsで使う場合だと設定方法異なるらしい。その件は今回はノータッチで
require "active_record"
require "./sample"
logger = Logger.new(File.open("sql.log", File::CREAT | File::WRONLY | File::APPEND))
ActiveSupport::LogSubscriber.colorize_logging = false
ActiveRecord::Base.establish_connection(
:adapter => "mysql2",
:host => "127.0.0.1",
:username => "user",
:password => "pass",
:database => "sample"
)
ActiveRecord::Base.logger = logger
p Sample.find(1)
デフォだとログにcolorizedされる模様なのだけど、ActiveSupport::LogSubscriber.colorize_loggingをfalseにすれば良いらしい。でそれを指定するのと指定しない場合で出力されるログは
D, [2014-02-25T16:00:47.256993 #7570] DEBUG -- : [1m[36mSample Load (0.2ms)[0m [1mSELECT `sample`.* FROM `sample` WHERE `sample`.`id` = 1 LIMIT 1[0m
D, [2014-02-25T16:15:43.946629 #7942] DEBUG -- : Sample Load (0.2ms) SELECT `sample`.* FROM `sample` WHERE `sample`.`id` = 1 LIMIT 1
的な感じらしい。1個目がcolorizedされたやつで2つ目がそれを無効にした場合