有没有办法停止Rails记录所有日志?

3

我不希望记录进入的IP地址,也不想记录任何内部事件。
我只想Rails按照请求进行处理,仅此而已。

这种做法可能吗?

如何避免日志文件 development.log 或 production.log 不断增长?


1
只是出于好奇,为什么?日志在调试方面非常有用,特别是当您的应用程序处于生产状态时。 - LandonSchropp
如果您担心日志文件大小增长过快,您可以选择对日志进行轮换。https://dev59.com/tW445IYBdhLWcg3wZJYn - LandonSchropp
3个回答

3

您可以将Rails日志记录设施替换为记录到/dev/null的记录器:

class NullLoggerRailtie < Rails::Railtie
  initializer 'null_logger', :before => 'initialize_logger' do |app|
    Rails.logger = ActiveRecord::Base.logger = ActionController::Base.logger = ::Logger.new("/dev/null")
  end
end

这将重新路由所有的Rails日志记录到null设备,而不是让它去任何文件。日志记录仍然会发生,但它将立即被丢弃。


好的。这个操作也会清除像是传入IP地址等数据吗?我想应该会。 - dsp_099
它将这些记录器的所有输出重定向到空设备 - 所有记录到它们的内容最终都将被记录到无处,包括IP和错误等。 :) - Chris Heald
这正是我想要的。 - dsp_099
值得注意的是,您的Web服务器可能仍会在其自己的日志中记录IP等信息,因此,如果您要进行完全匿名化,您也需要注意它们。 - Chris Heald
我不知道这是否会成为一个问题,因为我正在编写这个实验性应用程序以在Tor上托管。 - dsp_099

3

设置日志级别。

可用的日志级别有::debug, :info, :warn, :error:fatal

如果想要知道当前日志级别,您可以调用 Rails.logger.level 方法。

要更改日志级别,请在您的环境初始化程序中使用 config.log_level = :fatal,或者随时在任何地方内联使用 Rails.logger.level = 0

另一种选择可能是将日志文件符号链接到 /dev/null。


抱歉,我说错了(我很难为问题想出标题)。我真正想做的是让Rails不保存有关其所做任何活动的记录。这包括日志(我会研究一下,谢谢),但也包括其他任何内容。它是否在某个地方存储有关谁访问了网站以及他们做了什么的其他日志信息? - dsp_099
顺便说一下,由于某种原因,那似乎不起作用。我在生产和开发环境中都添加了config.log_level =:fatal,但我仍然得到了一堆日志,我确定它们被存储在某个地方。 - dsp_099
你是指应用程序根目录下的/log吗? - Michael Durrant

2
简化Chris Heald的回答,你可以通过环境变量将日志记录器设置为/dev/null
Rails.application.configure do
  config.logger = Logger.new("/dev/null")
end

将代码放在正确的文件中:

  • 开发环境: config/environments/development.rb
  • 测试环境: config/environments/test.rb
  • 生产环境: config/environments/production.rb
  • 所有环境: congig/applications.rb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接