0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

孤独アドベントカレンダーに挑戦Advent Calendar 2019

Day 20

railsでカスタムログ({Rails.env}.log以外のログ)を出力する方法

Last updated at Posted at 2019-12-19

railsでカスタムログ({Rails.env}.log以外のログ)を出力する方法

カスタムロガーを追加したい場合

config/application.rbもしくは、config/environments/配下の各環境設定ファイル内で以下を指定

config.sample_logger = Logger.new(Rails.root.join('log/sample.log'))

ログフォーマット

日時のフォーマットを変更

Logger#datetime_format= を用いてログに記録する時の日時のフォーマッ トを変更することもできます。

logger.datetime_format = '%Y-%m-%d %H:%M:%S'
# e.g. "2004-01-03 00:54:26"

コンストラクタでも同様にできます。

require 'logger'
Logger.new(logdev, datetime_format: '%Y-%m-%d %H:%M:%S')

フォーマットを変更

Logger#formatter= を用いてフォーマットを変更することもできます。
4つの引数 (severity, time, program name, message) を受け取る call メソッドを 持つオブジェクトを指定します。call メソッドの返り値は文字列にしてください。

Procオブジェクトを指定する場合

logger.formatter = proc do |severity, datetime, progname, msg|
  "#{datetime}: #{msg}\n"
end
# => "2005-09-22 08:51:08 +0900: hello world"

独自で作成したclassのオブジェクトを指定する場合

logger.formatter = SampleLoggerFormatter.new

class SampleLoggerFormatter
  def call(severity, timestamp, progname, msg)
    "#{datetime}: #{msg}\n"
  end
end

コンストラクタでも同様にできます。

require 'logger'

Logger.new(logdev, formatter: proc {|severity, datetime, progname, msg|
  "#{datetime}: #{msg}\n"
})

Rubyリファレンスマニュアル

0
1
1

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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?