Heroku日志记录无效

jos*_*yer 15 heroku ruby-on-rails-3.1 cedar

我在Heroku Cedar上部署了一个rails 3.1应用程序.我遇到了日志记录问题.默认的rails日志工作正常,但是当我执行以下操作时:

logger.info "log this message"
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,Heroku不会记录任何内容.当我部署我的应用程序时,我看到heroku消息"注入rails_log_stdout"所以我认为调用记录器应该可以正常工作.将语句放在我的日志中.我也尝试过其他日志级别,如logger.error.什么都行不通.有没有人见过这个?

Phi*_*vin 34

MBHNYC的答案非常有用,但它很难在不改变代码的情况下更改不同环境中的日志级别.您可以在您的代码中使用此代码environments/production.rb来表示环境变量并具有合理的默认值:

# https://github.com/ryanb/cancan/issues/511
config.logger = Logger.new(STDOUT)
config.logger.level = Logger.const_get((ENV["LOG_LEVEL"] || "INFO").upcase)
Run Code Online (Sandbox Code Playgroud)

使用此命令设置不同的日志级别:

heroku config:set LOG_LEVEL=error
Run Code Online (Sandbox Code Playgroud)


MBH*_*NYC 19

我只是遇到了同样的问题,通过使用这里的技术解决了:

https://github.com/ryanb/cancan/issues/511

基本上,你需要指定记录器输出到STDOUT,一些宝石干扰记录器并且似乎劫持了功能(在我的情况下可以扫描).

对于懒惰的点击,只需将其放在environment/production.rb中

config.logger = Logger.new(STDOUT) 
config.log_level = :info
Run Code Online (Sandbox Code Playgroud)

  • Heroku的支持让我处于类似的方向.以下是他们声称导致此问题的宝石列表:acts_as_audited,on_the_spot,restful_jsonp,authlogic,cancan,simple-navigation (2认同)