【Ruby On Rails】 act-fluent-logger-railsでエラー


act-fluent-logger-railsを利用してrailsのログをfluentd経由でdynamoDBに送信しようとしたらエラーになってしまった。

設定はこちら↓のサイトの通りに設定。
https://github.com/actindi/act-fluent-logger-rails

エラーはこんな感じ↓

2014-07-01 21:05:54 +0900 [warn]: fluent/output.rb:343:rescue in try_flush: temporarily failed to flush the buffer. next_retry=2014-07-01 21:07:52 +0900 error_class="ArgumentError" error="unsupported attribute type NilClass in value for attribute uid" instance=81958740

問題はenvironmentsの設定でした。

# vi config/environments/production.rb

config.log_level = :info
config.logger = ActFluentLoggerRails::Logger.
  new(log_tags: {
        ip: :ip,
        ua: :user_agent,
        uid: ->(request) { request.session[:uid] }
      })

このuidの部分がsession_idをいれるようになっているため、sessionがはられていない状況だとuidがnullになってしまい、fluentdからdynamodbに転送するときにエラーになっていたみたいです。

試しにfluentdのdebugで標準出力した結果がこちら

debug.forward: {
  "messages":"Started GET \"/assets/pc.css?body=1\" for 192.168.XXX.XXX at 2014-07-01 20:59:37 +0900",
  "level":"INFO",
  "ip":"192.168.XXX.XXX",
  "ua":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0",
  "uid":null
}

最後のuidの部分がnullになってますね。
とりあえず「config/environments/production.rb」からuidを外したら動作するようになりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です