ruby-on-rails 如何关闭Rails应用中不必要的命令日志?

lg40wkob  于 2022-12-15  发布在  Ruby
关注(0)|答案(1)|浏览(114)

我开始学习Ruby on Rails,我面临着命令日志的问题。
我正在使用命令提示符启动服务器。
我的Ruby版本是:2.7
我的Rails版本是:7.0
我想关闭或隐藏不必要的日志。
日志示例:

Post Load (0.5ms)  SELECT "posts".* FROM "posts" WHERE "posts"."author_id" = $1 ORDER BY "posts"."created_at" DESC LIMIT $2  [["author_id", 3], ["LIMIT", 3]]

Could not log "sql.active_record" event. Encoding::CompatibilityError: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string) [
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activesupport-7.0.4/lib/active_support/backtrace_cleaner.rb:96:in `sub'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activesupport-7.0.4/lib/active_support/backtrace_cleaner.rb:96:in `block in add_gem_filter'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activesupport-7.0.4/lib/active_support/backtrace_cleaner.rb:109:in `block (2 levels) in filter_backtrace'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activerecord-7.0.4/lib/active_record/log_subscriber.rb:144:in `each'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activerecord-7.0.4/lib/active_record/log_subscriber.rb:144:in `each'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activerecord-7.0.4/lib/active_record/log_subscriber.rb:144:in `each'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activerecord-7.0.4/lib/active_record/log_subscriber.rb:144:in `each'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activerecord-7.0.4/lib/active_record/log_subscriber.rb:144:in `first'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activerecord-7.0.4/lib/active_record/log_subscriber.rb:144:in `extract_query_source_location'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activerecord-7.0.4/lib/active_record/log_subscriber.rb:136:in `log_query_source'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activerecord-7.0.4/lib/active_record/log_subscriber.rb:131:in `debug'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activerecord-7.0.4/lib/active_record/log_subscriber.rb:71:in `sql'",
  "C:/Ruby27-x64/lib/ruby/gems/2.7.0/gems/activesupport-

字符串
我试着在网上找到解决方案,但我没有找到任何可以帮助我的东西。

owfi6suc

owfi6suc1#

要关闭或隐藏Rails应用中不必要的日志,您可以在开发环境配置文件(通常位于config/environments/development.rb)中修改日志级别。
您可以将日志级别设置为“警告”或“错误”,以仅显示警告和错误,也可以将其设置为“致命”,以仅显示致命错误。
例如,可以将以下行添加到development.rb文件中:

config.log_level = :warn

字符串
或者,您可以使用Rails日志记录器选择性地只记录某些消息,而不是关闭所有日志。您可以使用logger.debuglogger.infologger.warnlogger.errorlogger.fatal方法在不同级别记录消息。
例如,您可以将以下行添加到代码中,以便仅记录“错误”级别或更高级别的消息:

logger.error("Some error message")

您还可以使用logger.tagged方法向日志消息添加标记,这样可以更容易地过滤和搜索日志。
例如,您可以将以下行添加到代码中,以记录带有“sql”标记的消息:

logger.tagged("sql") { logger.debug("Some SQL query") }

然后,您可以使用Rails日志过滤器在日志中只显示带有“sql”标记的消息。
例如,可以将以下行添加到development.rb文件中:

config.log_tags = [ :request_id, :sql ]

这将只显示日志中带有“request_id”和“sql”标记的日志消息。
还可以使用Rails日志过滤器从日志中排除某些消息。
例如,可以将以下行添加到development.rb文件中:

config.log_tags = [ :request_id, :sql, { exclude: [ "sql.active_record" ] } ]

这将从日志中排除带有“sql.active_record”标记的日志消息。
通过使用日志级别和日志筛选器,您可以自定义日志,以便仅显示所需的信息并隐藏不必要的日志消息。

相关问题