11

ガベージコレクション情報(たとえば、-XX:+PrintGCDetailsまたはの出力-verbose:gc)をJavaアプリケーション内のロガー(私の場合はsl4j + logback)に転送する方法はありますか?

4

2 に答える 2

6

これらのメッセージは、Javaコードからではなく、JVMネイティブプロセスによって生成されるため、次のことができます。

  1. -Xloggc(回転なし) を使用して出力をファイルにリダイレクトします
  2. stdoutを直接パイプします(いくつかの回転オプション)
于 2012-04-20T14:52:25.947 に答える
3

興味深いアプローチは、gc.logを名前付きパイプにリダイレクトすることです。名前付きパイプ -Xloggc:/my/named/pipe にGCログを書き込む方法

次に、アプリケーション自体からそのパイプを読み取ります 。Javaからパイプという名前のWindowsを開く方法は?

コードから任意の(非同期ローリングなどの)ログバックロガーにログインします。

Windowsマシンで試してみました。残念ながら、LinuxよりもWindowsでセットアップするのは難しいです。

Windowsでは、基本的に追加のPowershellスクリプトを使用して動作します(専用アプリケーションにすることもできます)。このサンプルプロジェクトには、SLF4Jを介したログバックへのGCログリダイレクトをテストするためにすぐに使用できるデモアプリケーションも含まれています。

于 2016-02-26T14:29:23.040 に答える