Ошибка при использовании Log4r

У меня проблема с использованием Log4r.

uninitialized constant Log4r::Logger::RootLogger

Я попробовал это, но все еще получил ошибку:

>> 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>'

2 ответа

Решение

Ваша проблема с Log4r::Logger.root зависит от версии (эта проблема существует в актуальной версии 1.1.11).

Вы можете использовать предыдущую версию log4r 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)

Этот метод позволяет создавать регистраторы с различными уровнями регистрации.

Хотя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 > 
Другие вопросы по тегам