Rails 4.2搭配Lograge如何为每条日志行添加日期时间前缀?
Rails 4.2 + Lograge 0.3.6 日志添加日期时间前缀配置方案
方案1:仅给Lograge输出的请求日志加时间戳
直接修改config/environments/development.rb中的Lograge配置,新增自定义字段即可:
config.lograge.enabled = true config.lograge.formatter = CustomLogstash.new # 新增以下配置添加时间戳 config.lograge.custom_options = lambda do |event| { # 可根据需求调整时间格式,比如改为 strftime("%Y-%m-%d %H:%M:%S") 输出本地可读格式 timestamp: Time.now.utc.iso8601 } end
该方案添加的时间戳会直接合并到Logstash格式的JSON日志结构中,不会影响其他非Lograge输出的日志格式。
方案2:给所有日志(含Rails默认日志)统一加时间前缀
如果需要所有写入development.log的日志行都带时间前缀,可以直接修改Rails全局日志格式化器,同样在config/environments/development.rb中添加配置:
# 初始化日志器 config.logger = ActiveSupport::Logger.new(config.paths["log"].first) # 自定义日志格式,可按需调整时间格式和输出字段顺序 config.logger.formatter = proc do |severity, datetime, progname, msg| "[#{datetime.strftime('%Y-%m-%d %H:%M:%S')}] #{severity} #{msg}\n" end
注意事项
- 两种方案按需二选一即可,同时开启可能会导致时间戳重复输出
- 若需要使用本地时区时间,把代码中的
Time.now.utc替换为Time.now即可
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

