3
3

More than 5 years have passed since last update.

Railsでサーバのログとバッチ処理のログを別出力する方法

Posted at

目的

Railsでbundle exec rails sでのログとruby foo.rbのログを別出力する

試した環境

OS : CentOS 6.8 (Final)
ruby : ruby 2.3.1p11
rails : 5.0.0

前提

  • rubyがインストールされている
  • rails アプリが既にある
  • ${app}/console/ 以下にバッチ処理のスクリプトがある

手順

batch用のenvironmentsを作成

$ cp ${app}/config/environments/production.rb ${app}/config/environments/batch.rb

batch環境で利用するDBを設定

$ vim ${app}/config/database.yml

batch:
  <<: *default
  database: db/prodcution.sqlite3

mysql, postgresql等の場合はbatch:以下はproductionと同じように設定してください

${app}/console/foo.rbの最初に以下を記述

ENV['RAILS_ENV'] = 'batch'
require File.join("~", "sample_app","config", "environment.rb")
logger = Rails.logger
logger.info("=== batch log ===")
(省略)

(*)sample_appは適宜自分のアプリの名前に変更してください

確認

$ ruby ${app}/console/foo.rb

上記を行って'log/batch.log'に=== batch log ===が出力されているかを確認

補足

model内の関数で定義したlogger.info("model log")もbatchから呼び出したときとサーバで呼び出されたときで別出力される

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3