Ruby 中如何修改日志级别(Logger)?

Ruby Logger 通过 logger.level = Logger::DEBUG 等常量设置级别;Rails 用 config.log_level。本文给出 Logger 级别表、动态调整与 Rails 配置方法。

最佳实践
Ruby 中如何修改日志级别(Logger)?封面

Ruby 标准库 Logger:logger.level = Logger::DEBUG(或 INFO/WARN/ERROR/FATAL)——级别以下的日志被过滤。Rails 应用在配置文件中设 config.log_level = :info。

Logger 基本用法

require 'logger'

logger = Logger.new(STDOUT)
logger.level = Logger::WARN      # warn/error/fatal/unknown 会输出

logger.debug "看不到"   # 被过滤
logger.warn  "能看到"

级别从低到高:DEBUG < INFO < WARN < ERROR < FATAL < UNKNOWN。

动态调整

# 保存并恢复实际旧值;共享 logger 的并发调用也会受影响
previous_level = logger.level
begin
  logger.level = Logger::DEBUG
  # 执行需要诊断的操作
ensure
  logger.level = previous_level
end

Rails 配置

# config/environments/production.rb
config.log_level = :info

# 或环境变量驱动
level = ENV.fetch("LOG_LEVEL", "info").downcase
raise "无效 LOG_LEVEL" unless %w[debug info warn error fatal unknown].include?(level)
config.log_level = level.to_sym

常见问题(FAQ)

Q:能给不同模块不同级别吗? 标准 Logger 每实例一级;Rails 可用语义化日志库(如 semantic_logger)按类名分级。

Q:级别字符串转常量? 先校验允许的级别名称,再使用 Logger::Severity.const_get(name.upcase, false);空字符串或不合法名称不能直接当配置接受。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台