ループで実行され、Eclipse IDEのコンソールウィンドウでSIGINT(ctrl-c)または終了ボタンが押された場合に終了するサーバーを作成しています。終了ログを正常に出力してシャットダウンする必要があります。ただし、問題は、EclipseIDEの終了ボタンを押してシャットダウンシーケンスがトリガーされている間はprintlnが機能しないように見えることです。以下の簡単なコードを見てください。
object Test extends App {
println("start")
Runtime.getRuntime().addShutdownHook(new Thread {
override def run = println("shutdown")
})
synchronized { wait }
}
これは、コマンドラインのscalaツールでうまく機能します。ctrl-cを押すと、「start」と「shutdown」の両方のメッセージが出力されます。しかし、Eclipse IDEで実行してコンソールウィンドウの終了ボタンを押すと、「シャットダウン」メッセージが出力されません。ただ静かに終了します。シャットダウンフック内の他のすべてが終了中に正しく実行されることを確認しました。動作しないのはprintlnだけです。
これについて何か考えはありますか?ロギング用の終了メッセージを印刷する必要があります。
よろしくお願いします!