アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

act-fluent-logger-rails を Rails4 対応にしました

こんにちは、tahara です。

Rails で Fluentd へログ出力する act-fluent-logger-rails を Rails4 対応にしました。

いままで config.log_tags = [ :subdomain, :uuid ] 等を指定していても無視していましたが、 ようやくタグを付けられるようにしました。遅くなってごめんなさい。

config/environments/production.rb で次のように書きます。

Foo::Application.configure do
  # Use a different logger for distributed setups
  config.logger = ActFluentLoggerRails::Logger.
    new(log_tags: {
          ip: :ip,
          ua: :user_agent,
          uid: ->(request) { request.session[:uid] }
        })
end

config.log_tags は使わないでください。使うと動かないです。

また次のように実行時に任意のタグを付けられます。

Rails::logger[:foo] = "foo value"

development 環境では普通のロガーを使いたい場合は config/initializers/logger.rb でも作るといいと思います。

# -*- coding: utf-8 -*-
# ActFluentLoggerRails::Logger を production の時だけ使うので
# development 環境の場合にエラーにならないようにする。
->(x) {
  unless x.respond_to?(:[]=)
    def x.[]=(k, v)
      debug("logger #{k} => #{v}")
    end
    def x.[](k)
    end
  end
}.call(Rails::logger)

さて、弊社ではエンジニアを募集をしています。 まずはランチを食べながらお話だけでも!