Ruby on Railsのログ(production.log)にUserAgentを追加する
下のように、Ruby on Railsのログ (例えば production.log)にUserAgentを追加してみました (実際にはログは1行で出力されています)。
I, [2014-07-06T08:40:53.574498 #1317] INFO -- : Started GET "/products/767" for 192.168.0.1 at 2014-07-06 08:40:53 +0900 by Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Ruby on Railsのログのうち、上のようなブラウザーからのアクセス情報は Rackレベルで行っています、またログフォーマットを変更するようなAPIは用意されていません。正式な手順はRackミドルウェアのレベルで Logger を差し替える事になりますが、面倒なので以下のようなパッチを作り config/initializers に置いて フォーマットを変更しました。
Rails 4.1.4 で確認確認しましたが他のバージョンで試す場合はRailsのソースを見てから対応して下さい。
- config/initializers/rack_logger.rb
module Rails module Rack class Logger < ActiveSupport::LogSubscriber # Add UserAgent def started_request_message(request) 'Started %s "%s" for %s at %s by %s' % [ request.request_method, request.filtered_path, request.ip, Time.now.to_default_s, request.env['HTTP_USER_AGENT'] ] end end end end