基于这篇文章,我尝试使用Rails 3.0.4配置log4r:http://www.dansketcher.com/2007/06/16/integrating-log4r-and-ruby-on-rails/
/Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:166:in `sub!': can't convert Pathname into String (TypeError)
from /Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:166:in `block in paramsub'
from /Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:165:in `each'
from /Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:165:in `paramsub'
from /Users/toto/.rvm/gems/ruby-1.9.2-p0/gems/log4r-1.1.9/lib/log4r/yamlconfigurator.rb:156:in `block in decode_hash_params'我已经在谷歌上搜索过Rails 3的集成,但还没有找到一个可行的解决方案。谁能给我一个工作代码片段,它允许使用YAML文件进行日志配置,并在运行时进行初始化?
作为参考,我将示例配置放在logger.rb /initializers文件夹中,将log4r.yml放在配置目录中。
谢谢
发布于 2011-05-11 11:49:19
Log4r的...The想法来自于著名的"Log4j",这是我在java编程生活中最喜欢的记录器。然而log4r的文档真的很差,对于新手来说真的很难。让我展示一下我的解决方案:
Step1。创建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 : PatternFormatterstep2。修改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
endstep3。将这一行添加到Gemfile中。
# which is the latest version and support "datefileoutputter"
gem 'log4r', '1.1.9' (如果您使用的是Rails 4+ (包括Rails6),则仍然存在配置:将此文件添加到step4/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 )
就这样办。现在将"cd“放入您的Rails应用程序文件夹,运行”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我的环境:
i386-mingw32
中运行
有任何问题请告诉我~ :-)
请参阅:https://stackoverflow.com/a/20154414/445908和rails6 log4r tagged_logging.rb:22:in `call': wrong number of arguments
发布于 2012-09-06 16:32:19
为了模拟rails日志记录行为(登录到依赖于环境的日志文件),我使用以下log4r.yml:
log4r_config:
# define all loggers ...
loggers:
- name : production
level : WARN
trace : 'false'
outputters :
- datefile_production
- name : development
level : DEBUG
trace : 'true'
outputters :
- datefile_development
- name : test
level : DEBUG
trace : 'true'
outputters :
- datefile_test
# define all outputters (incl. formatters)
outputters:
- type: DateFileOutputter
name: datefile_production
dirname: "log"
filename: "production.log"
formatter:
date_pattern: '%H:%M:%S'
pattern : '%d %l: %m '
type : PatternFormatter
- type: DateFileOutputter
name: datefile_development
dirname: "log"
filename: "development.log"
formatter:
date_pattern: '%H:%M:%S'
pattern : '%d %l: %m '
type : PatternFormatter
- type: DateFileOutputter
name: datefile_test
dirname: "log"
filename: "test.log"
formatter:
date_pattern: '%H:%M:%S'
pattern : '%d %l: %m '
type : PatternFormatter发布于 2013-10-15 10:49:05
谁能给我一个可以工作的代码片段,允许使用YAML文件进行日志配置,并在运行时进行初始化?
我以一种替代标准rails记录器的方式编写了一个detailed blogpost about how to set up log4r。此外,我还详细介绍了如何使用多个记录器,如何使用日志级别,以及如何使用Log4r记录Mongoid、ActiveRecord和异常(包括堆栈跟踪)。
在与这篇文章对应的HackerNews thread上的评论中提出了另一个明显更成熟的gem "Logging“,所以对Log4r感兴趣的人可能也想看看这个gem。
https://stackoverflow.com/questions/5664136
复制相似问题