Web项目中的单个或多个记录器实例

时间:2017-03-16 16:38:48

标签: ruby-on-rails ruby logging sinatra

我正在我的项目中构建一个日志系统,这是一个基于Sinatra的Ruby Web App,类似于Rails。

我在Github上引用了很多日志框架,比如sinatra / logger,日志记录,语义记录器,我看到了一些Rails的用法。

许多日志框架写道我们应该为每个类创建许多日志实例,在调试时由每个类单独控制日志级别,我不知道它有什么好处。我认为通过从配置文件中读取日志级别来改变日志级动态就足够了。

当我开发android项目时,我们正在使用单个日志实例,并且所有地方都调用静态方法,如“MyLog.info”,这个解决方案可以让我在一个地方控制和格式化日志,我想这是在项目中只创建一个日志实例的好处。

另外,我看到了Rails的用法,它也只有一个名为Rails.logger的实例,无论我想在哪里写日志,我都称之为Rails.logger.info“xxxxx”, 这很容易。

如果我为每个类写了很多记录器,我应该为日志编写许多重复的代码,我对此表示怀疑,有人能告诉我哪一个更好或者我如何选择。

1 个答案:

答案 0 :(得分:0)

不确定你要求的是什么,因为这句话让我感到困惑:

  

另外,我看到了Rails的用法,它也只有一个名为Rails.logger的实例,无论我想在哪里写日志,我都会调用Rails.logger.info" xxxxx",这很容易

class AppName < Sinatra::Application

  configure do
    enable :logging
  end

  get '/' do
    logger.info "Hello world.. This is AppName!"
  end
end

根据以下评论进行修改:

这实际上取决于您的应用程序的结构。但是,我之前完成它的一种方法是要求所有其他类位于主AppName类的顶部。这样的事情:Dir["./other-class-dir/*.rb"].each {|file| require file}将起作用。其他类现在可以访问记录器实例。