私は JBoss 4.0.5.GA を実行しており、OS X Mountain Lion で log4j パッケージが含まれていると思います。../server/site/conf/log4j.xml
起動/シャットダウン メッセージを別のファイルにキャプチャするように構成しました。
<appender name="SERVER_EVENTS" class="org.jboss.logging.appender.RollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/server_events.log"/>
<param name="Append" value="false"/>
<param name="ImmediateFlush" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="1"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<category name="org.jboss.system.server.Server">
<priority value="INFO" />
<appender-ref ref="SERVER_EVENTS"/>
</category>
これは、起動/シャットダウン行をキャプチャする限り機能します。server_events.log
LaunchAgent を使用して、そのファイルの変更を監視しています。LaunchAgent がロードされ、機能していることを確認しました。
LaunchAgent は次の時点で応答します。
run.sh
が開始され、server_events.log
ファイルが切り捨てられたとき。- サーバーのシャットダウン時に、ログ エントリのグループが「Shutdown complete」で終了する場合。
私が抱えている問題は、「開始...」メッセージをキャプチャすることです。多くのグーグル検索の後、問題が何であるかがわかりましたが、解決策が存在するかどうかさえわかりません。JBoss は実行中にファイルを「保持」しているため、メッセージがキャプチャされていないと思います。上記で、JBoss がメッセージを「ImmediateFlush」することを明示的に要求していることがわかります。それがデフォルトだと思っていたのですが、Finder ではファイルが 0 バイトであることがわかりますが、Sublime Text 2 で開いたファイルを見ると起動メッセージが表示されます。
起動メッセージが送信された直後にディスクに書き込まれるようにする方法はありますか? それとも、古いバージョンの JBoss を実行しているので、運が悪いのでしょうか?