首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Log4r出错

使用Log4r出错
EN

Stack Overflow用户
提问于 2014-01-05 14:22:13
回答 2查看 759关注 0票数 1

我在使用Log4r时遇到了问题。

代码语言:javascript
复制
uninitialized constant Log4r::Logger::RootLogger

我尝试过this,但仍然有一个错误:

代码语言:javascript
复制
>> 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>'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-05 14:51:12

Log4r::Logger.root的问题取决于版本(实际版本1.1.11有此问题)。

您可以使用previous log4r-version 1.1.10

代码语言:javascript
复制
gem 'log4r', '<=1.1.10' #or '= 1.1.10'
require 'log4r'
Log4r::Logger.root

log4r在创建第一个记录器时定义了像Log4r::DEBUG这样的常量。

在访问级别常量之前,您需要一个Log4r::Logger.new('dummy')

代码语言:javascript
复制
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)定义它们。

这种技术允许它使用create loggers with different logging levels

票数 1
EN

Stack Overflow用户

发布于 2014-01-05 14:57:09

尽管Log4r::Logger.root不再启用常量,但在后面的答案中包含的代码确实引入了常量:

代码语言:javascript
复制
Log4r.define_levels(*Log4r::Log4rConfig::LogLevels)

具体如下:

代码语言:javascript
复制
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 > 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20934649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档