在开发 Web 应用程序时,日志是非常重要的信息来源。但是,在生产环境下,我们可能需要将某些日志信息记录在文件中,同时要具体控制其记录的级别,以保护服务器的资源。

在 Ruby on Rails 中,日志级别是在配置文件中设置的,而这个级别在应用程序运行时是不会改变的。但是,如果你想在不更改配置文件的情况下更改日志级别,该怎么办呢?

幸运的是,Ruby on Rails 允许我们在运行时更改日志级别。在这篇文章中,我将向你介绍如何在 Rails 应用程序中动态更改日志级别,并在特定的情况下关闭或启用调试日志。

步骤一:创建设置控制器

首先,我们需要创建一个设置控制器。该控制器将允许我们在应用程序中更改日志级别。在运行以下命令之后,我们将在项目中创建一个名为 Settings 的控制器。

“`ruby

$ bin/rails generate controller settings

“`

命令的运行结果将如下所示:

“`ruby

create app/controllers/settings_controller.rb

route get ‘settings/index’

invoke erb

create app/views/settings

create app/views/settings/index.html.erb

invoke test_unit

create test/controllers/settings_controller_test.rb

invoke helper

create app/helpers/settings_helper.rb

invoke test_unit

invoke assets

invoke coffee

create app/assets/javascripts/settings.coffee

invoke scss

create app/assets/stylesheets/settings.scss

“`

现在,我们已经在项目中创建了设置控制器,接下来,我们要在其控制器中定义两个方法,即开启和关闭日志记录。

步骤二:定义方法

让我们在设置控制器中定义两个方法:`enable_logging` 和 `disable_logging`。在进行设置时,这两个方法将用于启用和关闭日志记录。

“`ruby

class SettingsController < ApplicationController

def enable_logging

Rails.logger.level = Logger::DEBUG

redirect_to root_url, notice: ‘日志记录已经启用’

end

def disable_logging

Rails.logger.level = Logger::INFO

redirect_to root_url, notice: ‘日志记录已经关闭’

end

end

“`

在上面的代码中,`enable_logging` 方法允许我们在应用程序中启用调试日志。它设置日志级别为 `Logger::DEBUG`,这意味着所有日志消息都会被记录下来。相反,`disable_logging` 方法关闭调试日志,并将日志级别设置为 `Logger::INFO`,这意味着只有应用程序的信息日志将被记录。

步骤三:创建视图

现在,我们需要创建两个视图:一个将启用调试日志的路由,另一个将关闭调试日志的路由。

在设置控制器的视图目录中,我们可以创建一个名为 `index.html.erb` 的文件。以下是代码示例:

“`ruby

日志设置

使用下面的链接可以启用或禁用日志记录。

<%= link_to '启用日志记录', enable_logging_settings_path %>

<%= link_to '禁用日志记录', disable_logging_settings_path %>

“`

在上述代码中,我们定义了两个链接,一个用于启用日志记录,另一个用于禁用。这些链接将对应 `enable_logging` 和 `disable_logging` 方法。

步骤四:更新路由

最后一步是更新路由。我们需要将设置控制器的路由添加到路由文件中。

“`ruby

# config/routes.rb

Rails.application.routes.draw do

get ‘/settings’, to: ‘settings#index’, as: ‘settings’

get ‘/settings/enable_logging’, to: ‘settings#enable_logging’, as: ‘enable_logging_settings’

get ‘/settings/disable_logging’, to: ‘settings#disable_logging’, as: ‘disable_logging_settings’

end

“`

在上面的代码中,我们定义了三个路由 `settings`、`enable_logging_settings` 和 `disable_logging_settings`。这些路由将与设置控制器中的 `index`、`enable_logging` 和 `disable_logging` 方法对应。

现在,我们已经完成了所有必要的设置。运行 Rails 应用程序并导航到设置路由,您现在可以启用和禁用日志记录。

结论

在此教程中,我们学习了如何在运行时更改 Rails 日志级别。通过更改日志级别,我们可以保护服务器资源并仅记录必要的信息。使用设置控制器和日志记录开关方法,可以轻松地在应用程序运行时控制日志记录。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/