使用Log4r时遇到问题。
uninitialized constant Log4r::Logger::RootLogger
我尝试了this,但仍然出错:
>> require "log4r"
=> true
>> Log4r::DEBUG
NameError: uninitialized constant Log4r::DEBUG
>> Log4r::Logger.root
=> uninitialized constant Log4r::Logger::RootLogger
from /var/lib/gems/1.9.1/gems/log4r-1.1.11/lib/log4r/staticlogger.rb:5:in `root'
from (irb):5
from /usr/bin/irb:12:in `<main>'
答案 0 :(得分:1)
Log4r::Logger.root
的问题取决于版本(实际版本1.1.11存在此问题)。
您可以使用previous log4r-version 1.1.10:
gem 'log4r', '<=1.1.10' #or '= 1.1.10'
require 'log4r'
Log4r::Logger.root
log4r通过创建第一个记录器来定义Log4r::DEBUG
之类的常量。
在访问级别常量之前,您需要Log4r::Logger.new('dummy')
。
require 'log4r'
p defined? Log4r::INFO #false
Log4r::Logger.new('dummy')
p defined? Log4r::INFO #constant -> is defined
一些背景:
有一个常数Log4r::Log4rConfig::LogLevels
定义不同的级别。在创建第一个记录器时定义级别常量。您也可以使用Log4r.define_levels(*Log4r::Log4rConfig::LogLevels)
答案 1 :(得分:0)
虽然Log4r::Logger.root
不再启用常量,但您在所引用的答案中稍后包含的代码会引入常量:
Log4r.define_levels(*Log4r::Log4rConfig::LogLevels)
以下内容:
MacbookAir1:so1 palfvin$ irb
2.0.0p247 :001 > require 'log4r'
=> true
2.0.0p247 :002 > Log4r.define_levels(*Log4r::Log4rConfig::LogLevels)
=> 5
2.0.0p247 :003 > Log4r::DEBUG
=> 1
2.0.0p247 :004 >