Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails web项目中的单个或多个记录器实例_Ruby On Rails_Ruby_Logging_Sinatra - Fatal编程技术网

Ruby on rails web项目中的单个或多个记录器实例

Ruby on rails web项目中的单个或多个记录器实例,ruby-on-rails,ruby,logging,sinatra,Ruby On Rails,Ruby,Logging,Sinatra,我正在我的项目中构建一个日志系统,这是一个基于Sinatra的Ruby Web应用程序,类似于Rails 我在Github上引用了很多日志框架,比如sinatra/logger、日志、语义日志,我还看到了Rails的一些用法 许多日志框架写我们应该为每个类创建许多日志实例,以便在调试时由每个类单独控制日志级别,我不知道这有什么好处。我认为,通过从配置文件读取日志级别,就可以动态更改日志级别 当我开发android项目时,我们使用单个日志实例,所有地方都调用静态方法,如“MyLog.info”,这

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

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

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

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

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


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

我不太清楚你要的是什么,因为这句话把我弄糊涂了:

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

class-AppName
根据以下评论进行编辑:


这实际上取决于应用程序的结构。但是,我以前做过的一种方法是要求所有其他类位于主AppName类的顶部。类似这样的内容:
Dir[“/other class Dir/*.rb”]。每个{文件| require文件}
都可以工作。其他类现在可以访问logger实例。

您是在问如何为每个类启用Sinatra登录吗?不,我是在问当我们构建web项目时,我们有两种方法来创建日志:1.为每个类创建多个日志实例2.为所有类只创建一个实例。哪种方法更好?是的,如果您在AppName类中,这是Sinatra::Application的子类,那么您有request.logger,它是通过request传递的。因此logger.info是AppName的实例。但在另一个普通类中,它并没有父类,也并没有logger instance.updated,答案基于您的评论。这取决于应用程序的结构。但是这是实现它的一种方法。谢谢你的回答,那么在什么情况下我们应该只在日志实例上使用,什么时候我们应该为每个类创建多个日志实例?我会说,将它们保持在同一个实例中,除非你需要或要求将它们分开。您可以随时在以后将它们分开:竖起大拇指好的,我将首先使用相同的实例,然后分析是否应该在以后将它们分开。非常感谢。
class AppName < Sinatra::Application

  configure do
    enable :logging
  end

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