Ruby 如何汇总一个方法运行过程中产生的所以日志?

w7938940 · 2018年04月13日 · 最后由 w7938940 回复于 2018年04月13日 · 944 次阅读
class Foo
  def method1
    logger.info 'var1'
    method2
  end

  def method2
     logger.info 'var2'
    method3
  end

  def method3
     logger.info 'var3'
  end
end

class Bar
  def method4
     logger.info 'var4'
    method5
  end

  def method5
     logger.info 'var5'
    method6
  end

  def method6
     logger.info 'var6'
  end
end

def test
  Foo.new.method1
  Bar.new.method4
end

日志会是:

var1
var2
var3
var4
var5
var6

希望 test 方法最终产生的是汇总起来的日志,类似

{ var1: 'var1', var2: 'var2', var3: 'var3', var4: 'var4', var5: 'var5', var6: 'var6' }

目前能想到的方法是在 test 方法里生成一个变量,下面每个方法都把要记录的日志数据写进这个变量,最终在 test 方法结束时一起打印出来,但是这样意味这每个方法都要传入这个变量,如果需要全局使用的话意味着要引入全局变量,有什么好的解决方案吗?

1 楼 已删除

就是想把每次方法的调用中间产生的一些变量记录成一条 json 数据,然后好收集起来格式化,如果是多线程日志交叉打印会很混乱

w7938940 回复

你是针对 web 应用还是普通 ruby 脚本?如果是 web 应用本身可以以请求开始结束为边界,但是如果是纯粹 Ruby 运行脚本,就得另外设计了。

martin91 回复

Rails 里面的请求已经可以记录整个流程,就是一些异步处理的脚本不知道要怎么做

需要 登录 后方可回复, 如果你还没有账号请 注册新账号