1

Google App Engine にデプロイされたアプリでデータストアからオブジェクトをデタッチしているときに、開発ボックスで再現できない「デタッチに失敗しました」という例外が発生します。デタッチ操作はサーバー側であるため、私が持っている唯一の情報は、アプリのログ ファイルの例外のログです。ただし、スタック トレースは省略されます。たとえば、最も深い内部例外は「... 36 more」で終了します。

アプリのロギングの詳細度を調整して、除外されていない完全なスタックトレースを含めるにはどうすればよいですか?

4

2 に答える 2

7

できることは、例外をログに記録するときに、Throwable をパラメーターとして追加することです。すなわち:

 Logger log = Logger.getLogger(YourClass.class.getName());
 .....
 }catch (final Throwable e){
       log.log(Level.SEVERE, e.toString(), e);
 }

これにより、GAE のログに適切なスタック トレースが出力されます。

この方法では、グローバル ログ レベルを変更する必要はありません。

于 2013-01-12T08:23:48.750 に答える
3

微調整できる可能性のあることがいくつかあります。

1)war\WEB-INF\logging.propertiesファイル内。.level値をDEBUGなどのより低いレベルに変更します。

2)Javaコードで、問題のあるコードを内にカプセル化してtry/catch、同じものを制御できるようにすることを検討してください。

3)catchブロックで、を介して例外データをログに記録することを確認しex.printStackTrace()ます。ここで、exは例外オブジェクトです。

于 2012-08-17T07:18:41.797 に答える