Hehe ... Log4rのアイデアは、Javaプログラミングの人生で私のお気に入りのロガーである有名な「Log4j」から来ています。ただし、log4rのドキュメントは非常に貧弱で、初心者にとっては非常に困難です。私の解決策を示しましょう:
ステップ1。log4r構成ファイルを作成します:(ファイル名:config / log4r.yml)
log4r_config:
# define all loggers ...
loggers:
- name : production
level : WARN
trace : 'false'
outputters :
- datefile
- name : development
level : DEBUG
trace : 'true'
outputters :
- datefile
# define all outputters (incl. formatters)
outputters:
- type: DateFileOutputter
name: datefile
dirname: "log"
# notice the file extension is needed!
# if you want the file is named by the process, just comment it,
# then it will automatically get the same name with its process,
# e.g. rails_2017-05-03.log
filename: "my_app.log"
formatter:
date_pattern: '%H:%M:%S'
pattern : '%d %l: %m '
type : PatternFormatter
ステップ2。config/application.rbを変更します
require 'rails/all'
# add these line for log4r
require 'log4r'
require 'log4r/yamlconfigurator'
require 'log4r/outputter/datefileoutputter'
include Log4r
Bundler.require(:default, Rails.env) if defined?(Bundler)
module Zurich
class Application < Rails::Application
#...
# assign log4r's logger as rails' logger.
log4r_config= YAML.load_file(File.join(File.dirname(__FILE__),"log4r.yml"))
YamlConfigurator.decode_yaml( log4r_config['log4r_config'] )
config.logger = Log4r::Logger[Rails.env]
end
end
ステップ3。この行をGemfileに追加します。
# which is the latest version and support "datefileoutputter"
gem 'log4r', '1.1.9'
(Rails 4以降(Rails6を含む)を使用している場合でも、step4があります。このファイルをconfig/initializersフォルダーに追加します。
# config/initializers/log4r_patch_for_rails4.rb
class Log4r::Logger
def formatter() # for rails4+
Proc.new{|severity, time, progname, msg|
formatted_severity = sprintf("%-5s",severity.to_s)
formatted_time = time.strftime("%Y-%m-%d %H:%M:%S")
"[#{formatted_severity} #{formatted_time} #{$$}]\n #{msg}\n"
}
end
def formatter= temp # for rails6+
end
end
)。
終わった。次に、Railsアプリケーションフォルダーに「cd」し、「bundle」を実行してlog4rをインストールし、次に「rails s」を実行すると、次のように「/log」フォルダーにログファイルがあります。
May 9 17:05 rails_2011-05-09.log
May 10 13:42 rails_2011-05-10.log
ログの内容は(私のお気に入りの形式)です:
$ tail log/rails_2011-05-10.log
Started GET "/????_settings/19/edit" for 127.0.0.1 at ...
13:42:11 INFO: Processing by ????SettingsController ...
13:42:11 INFO: Parameters: {"id"=>"19"}
13:42:12 DEBUG: ????Setting Load (0.0ms) SELECT "d ...
13:42:12 INFO: Completed 200 OK in 750ms
私の環境:
- OS:XPで実行されているcygwin
- ルビー1.8.7(2011-02-18パッチレベル334)[i386-mingw32]
- レール:3.0.5
- 宝石:1.6.0
ご不明な点がございましたらお知らせください〜:-)
参照:https ://stackoverflow.com/a/20154414/445908
、およびrails6 log4r tags_logging.rb:22:in `call':引数の数が間違っています