[Rails]独自のロガー(logger)を設定する方法

Railsのloggerってデフォルトだと読みにくいし、すべてのログが一箇所に集まってるので、この処理は分けたい! って時ありますよね。 そんな時に独自のログを設定する方法を解説します

独自ロガー設定方法

以下のように各環境毎に独自のロガーを設定することが出来ます
編集するファイルはconfig/environments/変更したい環境.rb
Rails.application.configure do
  config.crawler_logger = Logger.new('log/crawler/crawler.log', 'daily')
  config.crawler_logger.formatter = ::Logger::MyFormatter.new
end
こんな感じで設定すると、日毎にログが作成されて、log/crawlerフォルダにログが作成されます。

また、::Logger::MyFormatter.newとしてformatterを定義しています。
こうすることで、独自のログ形式でログを作成することができます。
config/logger_my_formatter.rbに以下のように記述します。
class Logger
  class MyFormatter < Formatter
    def call(severity, time, progname, msg)
      "[#{severity}] #{time} #{msg} \n"
    end
  end
end

独自ロガー呼び出し方法

以下のように記述すると独自設定のロガーでloggingすることが可能です。
なお、ロガーの名称はconfigの設定と合わせる必要があります。
Rails.application.config.crawler_logger.info { "info logging" }

コメント