我对ruby环境非常陌生,我正在寻找一个不错的日志框架来使用它,我的ruby和rails应用程序。
在我以前的经验中,我成功地使用了log4j和log4p ( perl端口),并期望与log4r具有相同的可用性(和成熟度)。
但是,我必须说,在log4r框架中有许多事情是不清楚的。
1日志继承
记录器的继承似乎根本不被管理!
如果我声明一个名为“myapp”的记录器,然后尝试获取一个记录器名称'myapp::engine',则查找将以NameError结尾。
我希望框架根据命名方案返回根记录器,并使用“myapp”记录器。
Q1:当然,我可以使用查找方法来处理这个问题并自己管理名称,但是,有没有一种更干净的方法来做到这一点而不需要任何额外的编码呢?
2 YAML配置
第二件让我困惑的是yaml配置。在log4r站点上,几乎没有关于这个系统的任何信息,文档链接到缺少的页面,所以我可以找到的所有信息都包含在gem的示例目录中。
我对yaml配置必须包含pre_config部分以及我需要定义自己的级别这一事实非常困惑。
如果我删除pre_config secion,或用标准级别(调试、信息、警告、致命)替换所有“自定义”级别,则该示例将引发以下错误:
log4r/yamlconfigurator.rb:68:in `decode_yaml': Log level must be in 0..7 (ArgumentError)因此,似乎没有办法使用一个简单的文件,我们只为框架声明记录器和追加器。
Q2:我真的认为我遗漏了一些东西,这肯定是提供一个简单的yaml conf文件的一种方式。你有这种用法的例子吗?
XML文件中的3变量替换
Q3:Yaml配置系统似乎提供了这样的特性,但是我无法找到与XML文件类似的特性。有什么想法吗?
4替代品?
我必须说,与log4j和其他log4j端口相比,我对log4j的特性级别和成熟度感到非常失望。
我遇到这个框架时,有着以其他语言记录API的坚实背景,我发现自己在各种类型中工作,只是为了在“真实世界的应用程序”中运行“基本事物”。
我指的是一个复杂的应用程序,它由几个gems、控制台/脚本应用程序和rails web前端组成,其中配置必须是互操作的,并且我们需要大量使用名称空间和继承。
为了找到更合适或更成熟的东西,我进行了几次搜索,但没有发现类似的东西。
Q4:你们知道可以在企业级应用程序中使用的(严肃的) log4r框架替代品吗?
感谢阅读所有这些!
我真的很感激你给我指点,
致以亲切的问候,
发布于 2010-05-18 14:59:49
我同意log4r文档非常糟糕。不过,我们正在使用它,它为我们提供了很好的服务,比如一个企业级的应用程序。
我们没有使用记录器继承,所以我无法帮助您,而且我也不知道任何替代软件,但是:
下面是我们用来读取YAML配置的代码(实际上,我认为我们已经将它传递到了哈希中),它还支持变量替换:
require 'log4r'
require 'log4r/yamlconfigurator'
y = "log4r_config:
# define all loggers ...
loggers:
- name : production
level : INFO
trace : 'false'
outputters:
- stdout
# define all outputters (incl. formatters)
outputters:
- type : StdoutOutputter
name : stdout
formatter:
date_pattern: '%Y-%m-%d %H:%M:%S'
pattern : '%d %l: #\{TEST\} %m '
type : PatternFormatter"
h = YAML.load y
log_cfg = YamlConfigurator
log_cfg['TEST'] = 'foobar'
log_cfg.decode_yaml h['log4r_config']
@log = Logger['production']
@log.info 'test'
#=>2010-05-20 14:36:32 INFO: foobar test 发布于 2010-05-19 09:01:29
由于我仍然在与yaml配置进行“斗争”,所以我在XML配置的代码中进行了一些挖掘,并找到了Q3的答案。
实际上,它的工作方式与yaml非常相似,您只需要引用xml文件中的#{VARNAME}的参数:
<filename>#{logdir}/processing.log</filename>并在读取xml文件之前在配置器中设置它们:
Log4r::Configurator['logdir']=log_dir_param
...
Log4r::Configurator.load_xml_file(conf_file_xml)另外,当我提到log4r文档的状态很糟糕(很多404错误)时,我说的是rubyforge上可用的文档.
最后,我查看了sourceforge项目,并在http://log4r.sourceforge.net/rdoc上找到了一个“不错”(以红宝石的方式)文档。
https://stackoverflow.com/questions/2856205
复制相似问题