Ruby on rails rails记录器调试日志

Ruby on rails rails记录器调试日志,ruby-on-rails,logging,Ruby On Rails,Logging,我继承了一个中型Rails应用程序,其中有许多不同的日志记录方法分布在代码库中。这是一个有点混乱,我不明白为什么有些日志输出,为什么有些不输出 在创建日志时,是否有一种方法让日志记录者“宣布自己”/记录一些状态信息?与设置debug=“true” 不知道您是否在寻找它,但是Rails有5个不同的日志级别(): 当记录某些内容时,如果消息的日志级别等于或高于配置的日志级别,则会将其打印到相应的日志中。如果您想知道当前日志级别,可以调用Rails.logger.level方法 可用的日志级别为::d

我继承了一个中型Rails应用程序,其中有许多不同的日志记录方法分布在代码库中。这是一个有点混乱,我不明白为什么有些日志输出,为什么有些不输出

在创建日志时,是否有一种方法让日志记录者“宣布自己”/记录一些状态信息?与设置
debug=“true”


不知道您是否在寻找它,但是Rails有5个不同的日志级别():

当记录某些内容时,如果消息的日志级别等于或高于配置的日志级别,则会将其打印到相应的日志中。如果您想知道当前日志级别,可以调用Rails.logger.level方法

可用的日志级别为::debug、:info、:warn、:error、:fatal和:unknown,分别对应于从0到5的日志级别号。要更改默认日志级别,请使用


config.log_level=:warn

是的,这就是ruby的美丽和痛苦。 首先,我将在
config/application.rb
中覆盖
Rails.logger=
方法,并使用一些(如您所说的)“公告”

只需添加到
config/application.rb
类似的内容并查看日志:

Rails.singleton_class.send('alias_method', :old_logger=, :logger=)
module Rails
  def self.logger=(value)
    puts "Hey logger '#{value.inspect}' starting!"
    self.old_logger = value
  end
end

或者仅仅调查一下
Rails.logger的值怎么样?

也许您正在寻找日志级别?我熟悉日志级别的概念,这不是我想要的。你能分享一下应用程序中有哪些日志记录者吗?唯一的方法是分别处理每个日志记录者/日志记录库。你可能需要检查他们的设置,也许猴子补丁他们设置一些设置,不管什么是通过初始化这是我害怕的。。。基本上没有办法做到我要求的…不,那不是我想要的。。。该应用程序在不同的位置定义了多个记录器。另外,rack本身也会进行一些日志记录。我希望能看到那些伐木工人。这非常接近我所需要的!还有两个后续问题:有没有办法知道谁/在哪里完成了任务?我在考虑打印调用堆栈。第二点:我认为一些日志记录是由Rack而不是Rails完成的。类似的方法是否也适用于机架?
2.2 Log Levels
Rails.singleton_class.send('alias_method', :old_logger=, :logger=)
module Rails
  def self.logger=(value)
    puts "Hey logger '#{value.inspect}' starting!"
    self.old_logger = value
  end
end