2

Heroku で Akka スケジュール メソッドが正しく動作しません。ローカルで正常に動作し、「ハートビート」をログに出力します。

問題のファイルは次のとおりです: https://github.com/magnusart/actor-test/blob/master/app/Global.scalaおよび以下のスニペット。

override def onStart(app: Application) {
    Logger.debug("Starting application")
    Akka.system(app).scheduler.schedule(2 seconds, 10 seconds) {
      Logger.debug("Heartbeat")
    }
  }

完全なアプリケーションはここにあります (この目的のために分離されており、actor-test.herokuapp.com にもあります)。 https://github.com/magnusart/actor-test

起動後に何が起こるかというとStarting application、ログに表示されますが、その後は何も表示されません。

2012-05-26T16:29:40+00:00 heroku[web.1]: Starting process with command `target/start -Dhttp.port=43943 -Xmx384m -Xss512k -XX:+UseCompressedOops`
2012-05-26T16:29:41+00:00 app[web.1]: Play server process ID is 3
2012-05-26T16:29:42+00:00 app[web.1]: [debug] application - Starting application
2012-05-26T16:29:42+00:00 app[web.1]: [info] play - Starting application default Akka system.
2012-05-26T16:29:42+00:00 app[web.1]: [info] play - Application started (Prod)
2012-05-26T16:29:42+00:00 app[web.1]: [info] play - Listening for HTTP on port 43943...

そのため、スケジュールされたアクターは実際には開始されないようです (もちろん、ローカルで開始されます)。私は Heroku Cedar を使用しています。これが機能しない理由についてのヒントに感謝します。何が欠けていますか?

BR マグナス・アンダーソン


更新 私が見つけたものから、これは Play 2 (私はバージョン 2.0.1 を実行しています) のバグであり、Heroku とは関係がないようです。Play 2 Lighthouse チケットを関連情報で更新しました。チケットはこちらにあります: https://play.lighthouseapp.com/projects/82401-play-20/tickets/448-play-dist-ignores-loggerxml#ticket-448-5

4

1 に答える 1

8

The problem seems to come from your logger setting, because in your Heartbeat you print a message with the "debug" level. AFAIK, Heroku runs your Play app in "production" mode (= "play start"), ie the log level is set to "info" so the debug messages are never printed on Heroku.

于 2012-05-27T05:48:54.957 に答える