加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Ruby Application中正确使用Log4r

发布时间:2020-12-17 04:37:59 所属栏目:百科 来源:网络整理
导读:我必须真的遗漏一些明显的东西,但是我在 Ruby应用程序中普遍使用Log4r时遇到了麻烦.我可以毫无问题地登录,但开销似乎很笨拙我设置的方式.我基本上将完整路径传递给文件名以登录我的应用程序中的每个类.调用的ruby脚本从ARGV中的一个参数中提取日志文件,然后
我必须真的遗漏一些明显的东西,但是我在 Ruby应用程序中普遍使用Log4r时遇到了麻烦.我可以毫无问题地登录,但开销似乎很笨拙我设置的方式.我基本上将完整路径传递给文件名以登录我的应用程序中的每个类.调用的ruby脚本从ARGV中的一个参数中提取日志文件,然后传递给我并在我在ruby中调用的每个类中设置.在每个类中,我使用patternFormatter将类/文件名插入到日志语句中.

有没有更好的方法来使这项工作?感觉无论我想到什么都需要将某些内容传递给我的ruby应用程序中的每个类.我可以在yaml配置文件中设置日志文件,但是我也会将配置文件传递给每个类.

任何建议?如果这没有意义,我可以尝试发布一些更具体的代码示例来进一步解释我的意思.

谢谢!

解决方法

嗯,你没有在脚本开头实例化Log4r :: Logger类并传递实例的任何原因?你甚至不必传递它,你总是可以从Logger类中获取它的名字:

run.rb:

require 'log4r'
require 'class_a'

logger = Log4r::Logger.new('test')
logger.outputters << Log4r::Outputter.stdout
logger.outputters << Log4r::FileOutputter.new('logtest',:filename =>  'logtest.log')
logger.info('started script')
a = A.new
a.do_something
logger.info('finishing')

class_a.rb:

class A
  def do_something
    logger = Log4r::Logger['test']
    logger.info('in do_something')
    puts 'hi!'
  end
end

当你运行run.rb时,你得到:

$ruby run.rb 
 INFO test: started script
 INFO test: in do_something
hi!
 INFO test: finishing

和磁盘上名为logtest.log的日志文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读